是否可以将类的实例作为另一个类的数据成员?

时间:2010-02-27 22:58:55

标签: c++ oop

我有一个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

如果尚未创建该对象,是否有办法让某个类的对象成为另一个类的数据成员?

2 个答案:

答案 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你可以找到详细的解释。