如何为内置类型定义的运算符显式使用基础运算符函数?见代码:
struct Int
{
Int() = default;
Int(int initial)
{
i = initial;
}
Int operator+(Int other)
{
return Int(i + other.i);
}
int i;
};
std::ostream& operator<< (std::ostream &out, const Int& data)
{
out << data.i;
return out;
}
int main()
{
Int a, b = 5, c = 5;
a = b + c;
std::cout << a << std::endl;
Int d, e = 5, f = 5;
d.operator=(e.operator+(f)); // possible with user defined types
std::cout << d << std::endl;
int g, h = 5, j = 5;
g.operator=(h.operator+(j)); // illegal
return 0;
}
标有“非法”的部分&#39;产生以下错误:
请求会员&#39;运营商+&#39;在&#39; h&#39;,这是非类型&#39; int&#39;
我知道你不能在int上调用一个方法,这是非类型的。问题在于定义了运算符+的含义,以及是否可以明确地使用它。
答案 0 :(得分:2)
如何为内置类型定义的运算符显式使用基础运算符函数?
你不能。
如果您正在寻找标准的相关部分,那么它应该是:
16.5重载运算符
6运算符函数应该是非静态成员函数或 是一个非成员函数,至少有一个类型为的参数 类,对类的引用,枚举或对引用的引用 枚举。