gpt4 book ai didi

具有反向关联顺序的 C++ 重载运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:38 27 4
gpt4 key购买 nike

很难想出一个标题...(我的母语不是英语。)

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;
}

此代码按预期编译/工作,但当我将 a=a+2 更改为 a=2+a 时,它将不再编译。GCC 给我这个错误:

no match for ”operator+” in ”2 + a”

有没有办法让 2+a 像 a+2 一样工作?

最佳答案

你需要一个自由函数,类之后定义

struct A
{
// ...
};

A operator+(int i, const A& a)
{
return a+i; // assuming commutativity
};

此外,您可以考虑在 A 中定义 A& operator+=(int i); 并将 operator+ 的两个版本实现为自由函数。您可能还对 Boost.Operators 或其他用于简化 A 的助手感兴趣,请参阅我的个人资料了解两个选项。

关于具有反向关联顺序的 C++ 重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118934/

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