为什么此代码执行时出错?

时间:2019-07-25 20:40:55

标签: c++ overloading operator-keyword keyword

我有一个小程序,包括操作员关键字重载。 它总是给我一个编译器错误C3867。 我该怎么办,或者此代码在哪里出问题?

这是用Visual Studio C ++ 2019编写的程序

#include <iostream>
#include "Header2.h"
#include <assert.h>


long newClass::operator=(long Val) {
    m_Value = Val;
    return m_Value;
}

long newClass::operator+=(long Val)
{

    m_Value += Val;
    return m_Value;
}

long newClass::operator-=(long Val)
{

    m_Value -= Val;
    return m_Value;
}

long newClass::operator*=(long Val)
{

    m_Value *= Val;
    return m_Value;
}

long newClass::operator/=(long Val)
{

    m_Value /= Val;
    return m_Value;
}

static int i = 2;

newClass nc;

int main(int argc, char **argv)
{


    nc.operator=(100);

    nc.operator+=(200);

    std::cout << nc.Value() << std::endl; // should print 300





    return 0;
}

这是头文件:

#pragma once

class newClass
{
public:
    long operator=(long Val);
    long operator+=(long Val);
    long Value() { return m_Value; } // <= this function returns a value
protected:
    long m_Value;
};

我希望输出为300,并进行验证。

0 个答案:

没有答案