gpt4 book ai didi

c++ - 编译错误

转载 作者:行者123 更新时间:2023-12-02 11:07:20 24 4
gpt4 key购买 nike

当我尝试编译此代码时

using namespace std;
namespace asf{
inline int operator|(int);
}

asf::operator|(int x){
return (x>1)?x*operator|(x-1):1;
}

int main(){
cout<<5|;
}

我收到以下错误
[Error] 'int asf::operator|(int)' must have an argument of class or enumerated type
[Error] ISO C++ forbids declaration of 'operator|' with no type [-fpermissive]
[Error] 'int asf::operator|(int)' should have been declared inside 'asf'
[Error] 'int asf::operator|(int)' must have an argument of class or enumerated type
In function 'int main()':
[Error] expected primary-expression before ';' token

怎么了?请帮忙。

最佳答案

如错误所述,重载的运算符必须至少具有一个类或枚举类型的参数。这就是语言的工作方式。

另外,重载时不能更改运算符的属性。您正在尝试定义一元|,这也是非法的。 |必须始终采用两个参数。 operator |的声明只有在类内声明时才可以包含一个参数,在这种情况下,左侧操作数隐式属于该类的类型。

关于c++ - 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661682/

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