你问了几个问题:
定义这样的 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"; }
结构是否需要构造函数来初始化它?
class
a和 a都不struct
需要用户定义的构造函数,但都允许它们。
struct X {
X() { std::cout << "in struct constructor!\n"; }
};
class Y {
public:
Y() { std::cout << "in class constructor!\n"; }
};