结构构造函数错误,为什么使用默认构造函数会调用错误
struct constructor error, why use default constructor function will call a error?
#include <iostream>
using namespace std;
struct Foo{
Foo(){}
Foo(int){}
void fun(){}
};
void main()
{
Foo a(10);
a.fun();
Foo b();
b.fun();//error
Foo c = Foo(); // this is the right way to use default constructor?
c.fun();
}
代码在编译时出错,因为b
不是一种类,谁能告诉我什么是b
?而Foo b()
的含义呢?
这个问题通常被称为C++"最烦人的解析"。
Foo b();
这将声明一个名为 b
返回Foo
的函数。
它应该是公正的;
Foo b;
这将声明一个 Foo
类型的变量b
,该变量将默认初始化(Foo
有一个默认构造函数(。 Foo c = Foo();
是的,这是一种替代的默认初始化(复制初始化(,但它通常更多地用于 POD 数据类型。
值得注意的是,对于 C++11(统一初始化(,以下内容将编译,并且可能是您的替代方案
Foo b{};
但它在这种情况下做同样的事情(关于构造b
(。
正确的方法应该是:
Foo b;
您刚刚声明了一个名为 b
的函数。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- STL向量上出现奇怪的复制构造函数错误
- C++ 乘法定义的构造函数错误消息似乎错误
- 通过构造函数错误地播种梅森扭曲
- C++ 多态构造函数错误;标识符未定义
- 类组合中的构造函数错误
- C++中的构造函数错误
- 构造函数错误:错误:数字常量之前的预期“”,“”或“..”
- 这个奇怪的复制构造函数错误抱怨的是什么
- Singleton子类构造函数错误
- 默认构造函数错误 (C++)
- 基类构造函数错误
- 初始化列表构造函数错误带有CRTP
- C++可能存在写入位置的构造函数错误冲突
- 构造函数错误:需要标识符
- 复制构造函数错误:对象的类型限定符与成员函数不兼容