gpt4 book ai didi

c++ - 默认构造函数被误解为函数名称

转载 作者:太空狗 更新时间:2023-10-29 19:37:23 24 4
gpt4 key购买 nike

当我编译下面的代码时

#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();
}

我得到了错误

call of overloaded ‘Room()’ is ambiguous

我尝试将 Room ObjRoom1; 更改为 Room ObjRoom1(); 来修复它,但是当我这样做时我得到了

request for member ‘display’ in ‘objRoom1’, which is of non-class type ‘Room()’

这是因为编译器认为 Room ObjRoom1() 是名称为 ObjRoom1() 且返回类型为 Room 的函数声明。你能帮我准确修复这段代码吗?

最佳答案

Room(int value=8)value 设置默认值。这意味着您可以在不指定值的情况下调用它,因此您可以像这样调用它

Room foo;

Room() 没有参数。这意味着你可以这样调用它

Room foo;

当您使用 Room foo;< 时,编译器应该如何知道您是想使用 Room(int value=8) 还是 Room()/?它不能,所以你得到了错误。

关于c++ - 默认构造函数被误解为函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com