我有这样的东西:

class Foo
{
    public:
        Foo(parameter);
}

class Bar
{
    Foo fooObject;
}

Bar::fooObject(data);


但是我得到:


  错误:'('标记之前的预期构造函数,析构函数或类型转换


所以我的问题是:如何从Bar外部构造fooObject?

最佳答案

您可以具有一个从类外部获取Foo实例的构造函数,然后可以将该实例复制或移动到您的成员变量中。另一种方法是采用必需的参数来构造Foo的实例,然后使用成员初始化程序列表来构造成员变量。

class Bar
{
public:
   Bar(const Foo& foo) // Copy
      : fooObject(foo)
   {
   }

   Bar(Foo&& foo) // Move
      : fooObject(std::move(foo))
   {
   }

   Bar(int example)
      : fooObject(example)
   {
   }

private:
   Foo fooObject;
}

关于c++ - 如何从外部类构造成员类对象(C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45483260/

10-11 19:36