あなたはいくつかの質問をします:
そのような hexFace オブジェクトを定義する最も効率的な方法は何ですか?
どのソリューションを選択しても、実行時の効率はほぼ同じです。コード行の効率、またはメンテナー プログラマーの頭脳の効率は、おそらくより価値があります。
C++ 11より前の機能に制限されている場合は、次を使用します。
struct hexFace {
int labels_[4];
};
C++11 の機能を使用できる場合は、次を試してください。
class surface
{
private:
std::vector<point> points_;
std::vector<std::array<int, 4>> hexFaces_;
}
構造体を使用する必要がありますか、それともクラスなどを使用したほうがよいですか?
struct
とclass
ほぼ同義です。意図をより明確に表していると思われる方を使用してください。「その他」については、試してみてくださいstd::array
現在のクラスに別のクラスをネストして定義できますか?
はい、できます。試す:
class surface
{
private:
class hexFace { public: int lables[4]; };
vector<point> points_;
vector<hexFace> hexFaces_;
};
可能であれば、このファイル内にもコンストラクターを記述する必要がありますか?
他の場所に記述することを選択するか、ユーザー定義のコンストラクターを完全に省略することを選択することができます。
インラインで記述する方法は次のとおりです。
class surface {
public:
class hexFace { public: hexFace() { std::cout << "inline constructor!\n" } };
}
外部に書き込む方法は次のとおりです。
class surface {
public:
class hexFace {
public:
hexFace();
};
// in another file ...
surface::hexFace::hexFace() { std::cout << "extern constructor\n"; }
構造体を初期化するためにコンストラクターが必要ですか?
aclass
もa もstruct
ユーザー定義のコンストラクターを必要としませんが、どちらも許可します。
struct X {
X() { std::cout << "in struct constructor!\n"; }
};
class Y {
public:
Y() { std::cout << "in class constructor!\n"; }
};