掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
構造体テーブルをメンバ変数にするには? (ID:52177)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 下記のような構造体テーブルをクラスのconstメンバ変数にしたいのですが、 > 方法が分かりません。ご存知の方がおられましたら教えてください。 配列自体をconst memberにすることはできません。 初期化できないからです。 ただし,配列をクラス化すると,できないこともないようになります。 template <typename T, unsigned N> class Array { private: T data_[N]; public: Array (void) {} // 一切の初期化をしない template <class InIt> Array (InIt first, InIt last) // [first, last)を使って初期化する { std::copy(first, last, data_); } T & operator[] (unsigned index) { return data_[index]; } const T & operator[] (unsigned index) const { return data_[index]; } }; なんてクラスを用意して, const testtable temp_[] = { { "a", "1" }, { "b", "2" }, { "c", "3" } }; なんていう初期化用のデータも用意してしまえば,あとは, class foo { const Array<testtable, sizeof(temp_) / sizeof(temp_[0])> array_; public: foo (void); }; foo::foo (void) : array_(temp_, temp_ + sizeof(temp_) / sizeof(temp_[0])) { } のようにして配列が作れます。 > 定数はメンバ変数にはできません。 定数メンバは作成できます。 mem-initializer使えば初期化できます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.