调用不带参数的构造函数有效,使用参数则无效。为什么?
Calling a constructor with no parameters works, with a parameter doesn't. Why?
我有一个定义如下的类:
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
实例?
不能在类成员声明中使用该初始化语法;只能使用 {}
或 =
初始化成员。以下方法应该有效(假设支持 C++11 或更高版本):
Foo foo{true};
Foo foo = Foo(true);
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!
};
相关文章:
- std::cin >>上的参数无效
- 结果失败或多个参数无效
- 错误:一元"*"的类型参数无效(具有"int"):使用 mergesort 计算
- 错误 带有模块的一元"*"(具有"int")的类型参数无效
- 由于调用 std::condition_variable 后参数无效而导致应用程序崩溃
- MPI_Iprobe:RMA 调用中的位移参数无效
- 推力::sort_by_key上的配置参数无效
- windres 致命错误:将输出写入时:参数无效
- 一元'*'的类型参数无效(有双精度)
- C++:传递给 C 运行时函数的参数无效
- 矢量模板参数无效
- 写入 -: 参数无效 } 时出错
- winsock2:recvfrom()函数以错误10022(参数无效)结束
- 模板参数的显式指定参数无效,该参数是 constexpr
- 模板参数无效
- 调用 getter 成员时的参数无效
- 模板模板参数中的参数无效
- 方法调用中的参数无效
- POSIX 计时器:参数无效
- C++类模板是一个模板:模板参数无效