2014-04-21 3 views
0

следующий код предназначен для добавления двух конструкций класса LargeNum и их добавления.C++ Unscoped Enum Type При попытке добавить конструкторы классов

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. Мысли?

+0

Просьба показать код нарушения в main.cpp и фактический выход ошибки компилятора. – user657267

+0

Оскорбительный код - последняя строка в вопросе (LargeNum Result_1 ...). Ошибка следующая: –

+0

ошибка C2110: '+': не может добавить два указателя ошибка C2512: «LargeNum»: нет подходящего конструктора по умолчанию \t IntelliSense : выражение должно иметь тип класса –

ответ

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 в качестве результата. Btw, вам не нужна дополнительная квалификация LargeNum:: при объявлении operator+(). Проверьте, не компилируется ли он, если нет, отправьте весь код (с реализацией) в один файл.

+0

Отлично работает! Спасибо друг. Просто сохранил мой класс LL. Удачи вам в ваших усилиях Quantum Computing. –

Смежные вопросы