繁体   English   中英

C++ 中的运算符重载:未限定 ID 错误 [重复]

[英]Operator Overloading in C++: unqualified-id error [duplicate]

我们刚开始在我的计算模块中学习类和运算符重载,我对给出的示例之一有疑问:

 #include <iostream>
using namespace std;

int main()
{
    class PositivePoint
    {
        // Must return PositivePoint object by value
        PositivePoint operator+(const PositivePoint& pSrc);
    };

    PositivePoint PositivePoint::operator+(const PositivePoint& pSrc)
    {
        Positive Point ret;
        ret.mX = mX + pSrc.mX;
        ret.mY = mY + pSrc.mY;
        return ret;
    }

    // Return success
    return 0;
}

我在'('标记之前的声明中不断收到错误“unqualified-id”。我不明白为什么会这样,因为我认为在上面的示例中正确定义了运算符重载。

您的代码几乎没问题,至少使用运算符的语法。您需要将 class 和运算符移出主要 function ... 定义 mX,My 并更正为ret声明的错字

之后我测试并工作......

#include <iostream>
using namespace std;
class PositivePoint {
public:
    int mY;
    int mX;
    // Must return PositivePoint object by value
    PositivePoint operator+(const PositivePoint& pSrc);
};

PositivePoint PositivePoint::operator+(const PositivePoint& pSrc) {
    PositivePoint ret;
    ret.mX = mX + pSrc.mX;
    et.mY = mY + pSrc.mY;
    return ret;
}

int main() {
    PositivePoint a;
    a.mX = 1;
    a.mY = -2;
    
    PositivePoint b;
    b.mX = 3;
    b.mY = 5;
    
    PositivePoint c = a + b;
    std::cout << "Hello World!"<< std::endl;
    std::cout << "c.X: " << c.mX << std::endl;
    std::cout << "c.Y: " << c.mY << std::endl;
 
    // your code goes here
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM