默认构造函数被误解为函数名称
Default constructor is misunderstood for function name
当我编译以下代码时
#include<iostream>
using namespace std;
class Room
{
int length;
int width;
public:
void display()
{
cout << length << ' ' << width;
}
Room()
{
length = 0;
width = 0;
}
Room(int value = 8) : length(value), width(value)
{}
};
int main()
{
Room objRoom1;
objRoom1.display();
}
我收到错误
重载的"房间()"调用不明确
我尝试将Room ObjRoom1;
更改为Room ObjRoom1();
来修复它,但是当我这样做时,我得到了
请求在"objRoom1"中请求成员"显示",该成员属于非类类型"房间()"
这是因为编译器认为Room ObjRoom1()
是名称为 ObjRoom1()
且返回类型为 Room
的函数声明。你能帮我准确修复这段代码吗?
Room(int value=8)
设置value
的默认值。 这意味着您可以在不指定值的情况下调用它,因此您可以像
Room foo;
Room()
不带任何参数。 这意味着您可以像这样称呼它
Room foo;
编译器应该如何知道您在使用Room foo;
时是要使用Room(int value=8)
还是Room()
? 它不能,所以你得到错误。
您有两个版本的构造函数 - 一个不带参数,另一个采用一个默认参数。根据定义,两者都是默认构造函数,编译器无法决定要调用哪一个。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 误解可变参数模板函数
- 编译器函数中的误解
- 我应该将分配器作为函数参数传递吗?(我对分配器的误解)
- 误解了 std::runtime_error 的 what() 函数
- 我对 c++ 纯虚函数和接口的误解
- C++ 对二项式共效递归函数的误解
- 默认构造函数被误解为函数名称
- 误解了虚函数在向量中工作
- 虚函数调用中的误解