我有一些看起来像这样的东西:
class Foo
{
public:
Foo(parameter);
}
class Bar
{
Foo fooObject;
}
Bar::fooObject(data);
但我明白了:
错误:在'('token
之前的预期构造函数,析构函数或类型转换
所以我的问题是:如何从Bar外部构造fooObject?
答案 0 :(得分:1)
您可以拥有一个构造函数,该构造函数从类外部获取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;
}
答案 1 :(得分:1)
使用构造函数和成员初始化列表初始化成员:
class Foo{
public:
Foo(int x);
};
class Bar{
public:
Bar(int param);
private:
Foo fooObject;
};
Bar::Bar(int param) : fooObject(param){};
如果在类之外是指类成员函数定义,那么您将使用以下语法进入源(.cpp)文件:
Bar::Bar(int param) : fooObject(param){}; // ctor definition outside the class
声明可以放在头文件中。