我有一个Board
类,其中构造函数将板的尺寸作为参数。我还有一个Puzzle
类来保存片段,我希望它有一个Board
作为数据成员。我想要这样,这样当我创建Puzzle
的实例时,我也会创建Board
的实例,所以我不必像用户那样创建单独的实例。但是,当我在Puzzle.h
文件中声明该板时,它需要Board
构造函数的实际数字:
// Puzzle.h file
private:
Board theBoard(int height, int width); // Yells at me for not having numbers
如果尚未创建该对象,是否有办法让某个类的对象成为另一个类的数据成员?
答案 0 :(得分:6)
如果我理解正确,问题是您需要正确实例化您的电路板:
class Puzzle {
public:
Board theBoard;
Puzzle(int height, int width) : theBoard(height, width) // Pass this into the constructor here...
{
};
};
答案 1 :(得分:1)
您必须声明数据成员而不指定除类型之外的任何内容,然后使用特殊构造函数初始化列表语法对其进行初始化。一个例子会更加清晰:
class A
{
int uselessInt;
public:
A(int UselessInt)
{
uselessInt=UselessInt;
}
};
class B
{
A myObject; //<-- here you specify just the type
A myObject2;
public:
B(int AnotherInt) : myObject(AnotherInt/10), myObject2(AnotherInt/2) // <-- after the semicolon you put all the initializations for the data members
{
// ... do additional initialization stuff here ...
}
};
Here你可以找到详细的解释。