当试图添加类构造时,C++未设置枚举类型

C++ Unscoped Enum Type When Trying to Add Class Constructs

本文关键字:C++ 设置 类型 枚举 添加      更新时间:2023-10-16

以下代码旨在添加两个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上。想法?

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

#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。顺便说一句,在声明operator+()时不需要额外的LargeNum::资格。检查它是否在没有编译的情况下编译,如果没有,请将整个代码(带实现)发布在一个文件中。