我的课程定义如下:
class Foo {
private:
boolean feature;
public:
Foo(boolean feature) : feature(feature) {}
// ...
};
我正在尝试构建一个实例,作为另一个类的私有属性:
class Bar {
private:
Foo foo(true);
// ...
};
这不起作用。我在声明的第一行得到expected identifier before numeric constant
。当我从Foo
的构造函数定义中删除参数并请求Foo foo;
时,它可以正常工作。
为什么?
如何定义和声明一个带有布尔参数的Foo
实例?
答案 0 :(得分:8)
您不能在类成员声明中使用该初始化语法;您只能使用{}
或=
初始化成员。以下应该有效(假设支持C ++ 11或更高版本):
Foo foo{true};
Foo foo = Foo(true);
答案 1 :(得分:1)
前C ++ 11的方法是:
class Bar {
public:
Bar() : foo(true){} //initialization
private:
Foo foo; //no parameter
};
加成:
class Bar {
private:
Foo foo(); //<- This is a function declaration for a function
//named foo that takes no parameters returning a Foo.
//There is no Foo object declared here!
};