注册 登录
编程论坛 C++教室

麻烦各位看下这个运算符重载的小程序怎么就CE了?

lxs_nicecode 发布于 2016-01-22 19:14, 1983 次点击
只有本站会员才能查看附件,请 登录

一个简单的运算符重载题目,提交后OJ显示是CE。。。编译不通过,但网站又不给看到底是哪儿没通过,但是我自己试了完全没有任何问题
希望各位帮忙找下错误,下面是小弟写的代码:
程序代码:
#include <iostream>
using namespace std;

class MyInt{
    private:
        int nVal;
    public:
        MyInt(int n) {nVal = n;}
        int ReturnVal() {return nVal;}
        MyInt& operator-(int x);
};

MyInt& MyInt::operator-(int x)
{
    nVal -= x;
    return *this;
}

int main()
{
    MyInt objInt(10);
    objInt-2-1-3;
    cout << objInt.ReturnVal();
    cout << ',';
    objInt-2-1;
    cout << objInt.ReturnVal();
    return 0;
}

3 回复
#2
yangfrancis2016-01-23 17:09
我编译也能通过。
#3
wmf20142016-01-23 17:25
题意要求的是编在类里面,你把类函数写类外面,虽然可行,可能不符合题意,如下修改也可正常,楼主试试(学无止境啊,对函数重载、运算符重载完全0,还好擅长调试):
程序代码:
#include <iostream>
using namespace std;

class MyInt{
    private:
        int nVal;
    public:
        MyInt(int n) {nVal = n;}
        int ReturnVal() {return nVal;}
        MyInt& operator-(int x)
        {
            nVal-=x;
            return *this;
        }
};

int main()
{
    MyInt objInt(10);
    objInt-2-1-3;
    cout << objInt.ReturnVal();
    cout << ',';
    objInt-2-1;
    cout << objInt.ReturnVal();
    return 0;
}



#4
yangfrancis2016-01-23 23:31
这种区别可以不算区别。
1