2013-06-05 6 views
1

Описание проблемы: Я пытаюсь создать большой целочисленный класс, используя перегрузку оператора, и я считаю, что пока это так хорошо, но я продолжаю получать эту ошибку при попытке скомпилировать. Любая идея, что может быть проблемой? Это не дает мне ошибку для ввода, только выход.bigint Оператор перегрузки

Ошибка: неопределенная ссылка на `BIGINT :: ToString() сопзИте»

#ifndef HEADER_H_INCLUDED 
#define HEADER_H_INCLUDED 


using namespace std; 

class bigint{ 

public: 
    bigint(); //default constructor - set this to zero 
    bigint(int x0); 
    bigint(int x0, int x1); 
    bigint(int x0, int x1, int x2); 
    bigint(int x0, int x1, int x2, int x3); 
    bigint(int x0, int x1, int x2, int x3, int x4); 
    string tostring() const; 


private: 
    int v[5]; 
}; 

ostream& operator <<(ostream & out, const bigint outpt){ 
out << outpt.tostring(); 
return out; 
} 


istream& operator >>(istream & in, const bigint& inpt){ 
return in; 
} //need to fix this 


bigint & operator +(const bigint & ls, const bigint & rs) { 
return bigint(ls) + rs; 
}//addition operator 

bigint & operator -(const bigint & ls, const bigint & rs){ 
    return bigint(ls) - rs; 
} //subtraction operator 

bool operator <(const bigint & ls, const bigint rs){ 
    return bigint(ls) < rs; 
} //use bool because these values can only be true or false 

bool operator >(const bigint & ls, const bigint rs){ 
    return bigint(ls) > rs; 
} 

bool operator >=(const bigint & ls, const bigint rs){ 
    return bigint(ls) >= rs; 
} 

bool operator <=(const bigint & ls, const bigint rs){ 
    return bigint(ls) <= rs; 
} 

bool operator ==(const bigint & ls, const bigint rs){ 
    return bigint(ls) == rs; 
} 

bool operator !=(const bigint & ls, const bigint rs){ 
    return bigint(ls) != rs; 
} 


#endif // HEADER_H_INCLUDED 
+6

Где ваша реализация tostring? –

+0

Я не вижу реализации tostring(). – user1810087

+1

Возможно, вы могли бы предоставить минимальный рабочий пример, в котором возникает проблема, удалить все, что вам не нужно (например, не используемые конструкторы, не используемые операторы и т. Д.). –

ответ

4

Я не вижу вашу реализацию tostring() закодированных. Вы должны запрограммировать свою собственную реализацию tostring().

Функция получит номер, преобразует его в строку и возвращает строку. Вы можете использовать stream, itoa или sprintf.

Если есть какой-либо родной метод tostring() в другом месте, убедитесь, что S строки «строка», безусловно, будет в верхнем регистре, а не в нижнем регистре (toString()).