Has*_*dev 6 c++ operator-overloading associativity
很难想出一个标题......(我不是英语母语人士.)
struct A
{
int value;
A operator+(int i) const
{
A a;
a.value=value+i;
return a;
};
};
int main(){
A a;
a.value=2;
a=a+2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码按预期编译/工作,但是当我将a = a + 2更改为a = 2 + a时,它将不再编译.GCC给了我这个错误:
no match for ”operator+” in ”2 + a”
Run Code Online (Sandbox Code Playgroud)
有没有办法以某种方式使2 +工作就像+ 2?
你需要一个免费的功能,在课后定义
struct A
{
// ...
};
A operator+(int i, const A& a)
{
return a+i; // assuming commutativity
};
Run Code Online (Sandbox Code Playgroud)
另外,您可以考虑A& operator+=(int i);
在A
工具中定义两个版本的operator+
自由函数.您可能也对Boost.Operators或其他助手感兴趣以简化A
,请参阅我的个人资料以获取两个选项.
归档时间: |
|
查看次数: |
2454 次 |
最近记录: |