假设我有一个类Foo
,它的构造函数有一个必需的参数。进一步假设我想定义另一个类Bar
,它的成员有一个类型的对象Foo
:
class Foo {
private:
int x;
public:
Foo(int x) : x(x) {};
};
class Bar {
private:
Foo f(5);
};
编译它会产生错误(在这种情况下,g++ 给出“ error: expected identifier before numeric constant
”)。一方面,对于Foo f(5);
编译器来说,它看起来像是一个函数定义,但我实际上想f
成为一个Foo
初始化为 5 的实例。我可以使用指针来解决这个问题:
class Foo {
private:
int x;
public:
Foo(int x) : x(x) {};
};
class Bar {
private:
Foo* f;
public:
Bar() { f = new Foo(5); }
};
但是有没有办法使用指针?