尝试添加类构造时的C ++ Unscoped枚举类型

时间:2014-04-21 02:00:34

标签: c++ enums

以下代码用于添加两个LargeNum类型类构造并添加它们。

class LargeNum
{

private:
    NumNode* first;
    NumNode* last;

    bool isNeg;

public:

    int value;
    NumNode* next;

    //todo constructor, inital point

    //constructor
    LargeNum(int value);
    LargeNum(string value);
    //destructor
    ~LargeNum();

    //members   
    void Append(int value);
    string ToString()const;

    const LargeNum LargeNum::operator+ (const LargeNum& ln2)
    {

        LargeNum result = value + ln2.value;

        return result;

    }

    //LargeNum add(LargeNum val1, LargeNum val2);

};

当我尝试在main.cpp中添加两个时,我得到整数或无范围的枚举类型错误,它引用第二个指针。见下文。

LargeNum Result_1 = L1 + L2;

错误落在l2上。想法?

1 个答案:

答案 0 :(得分:1)

不确定你得到的错误是什么,但是,下面的代码编译得很好(你的类的简化版本)

#include <iostream>
#include <string>

using namespace std;

class LargeNum
{

public:

int value;

//todo constructor, inital point

//constructor
LargeNum(int value):value(value){};
LargeNum(string value){};
//destructor
~LargeNum(){};

//members   

const LargeNum operator+ (const LargeNum& ln2)
{

    LargeNum result = value + ln2.value;

    return result;

}
};

int main()
{
    LargeNum L1=4;
    LargeNum L2=5;
    LargeNum L3=L1+L2;

    cout <<L3.value;

}

并输出9作为结果。顺便说一句,在宣布LargeNum::时,您不需要额外的operator+()资格。检查它是否编译,如果没有,请将整个代码(带有实现)发布在一个文件中。