2014-12-08 3 views
0

Я выполняю реализацию BigInt и для одного из моих конструкторов, я должен взять значение int и в основном преобразовать его в строку, а затем взять каждый символ и сохранить его в узле связанного списка.Почему мой to_string() не работает?

My struct Digit Node - это двойной список со значением «char digit». Мой класс BigInt имеет две частные переменные элемента head и tail. (которые являются указателями на DigitNode).

Я получаю эту ошибку: ошибка: вызов перегруженной 'to_string (INT &)' неоднозначен

мой файл заголовков:

#include <iosfwd> 
#include <iostream> 
#include "bigint.h" 


using namespace std; 

Мой конструктор:

BigInt::BigInt(int i) // new value equals value of int (also a default ctor) 
{ 
    string num = to_string(i); 
    DigitNode *ptr = new DigitNode; 
    DigitNode *temp; 
    ptr->prev = NULL; 
    this->head = ptr; 
    if (num[0] == '-' || num[0] == '+') ptr->digit = num[0]; 
    else ptr->digit = num[0] - '0'; 
    for (int i = 1; num[i] != '\0'; i++) 
    {  
     ptr->next = new DigitNode; 
     temp = ptr; 
     ptr = ptr->next; 
     ptr->digit = num[i] - '0'; 
     ptr->prev = temp; 
    } 
    ptr->next = NULL; 
    this->tail = ptr; 

} 

Спасибо для вашей помощи!

+0

Какой компилятор вы используете? MSVC? –

+0

Это ваша собственная реализация 'to_string' или та, которая включена в стандартную библиотеку? –

+0

Im using g ++. И я пытаюсь использовать стандартную реализацию библиотеки. – user3380850

ответ

0

Я бы догадаться, вы используете VC 2010, проблема VC2010 только обеспечивает перегрузки для long, long long, long double, unsigned long. int не входит. Вы должны использовать тип Compliant вместо:

static_cast<long long>(i)

эта линия стала бы

string num = to_string(static_cast<long long>(i)); 
Смежные вопросы