2014-12-08 42 views
0

我正在做一個BigInt實現,並且對於我的一個構造函數,我需要接受一個int值並基本上將其轉換爲一個字符串,然後將每個字符並保存到鏈接列表的節點中。爲什麼我的to_string()不工作?

我的結構數字節點是一個值爲'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? – 2014-12-08 03:40:28

+0

這是你自己實現的'to_string'還是包含在標準庫中的呢? – 2014-12-08 03:42:01

+0

我使用g ++。我正在嘗試使用標準庫實現。 – user3380850 2014-12-08 03:44:22

回答

0

我不得不猜測你正在使用VC 2010,問題是VC2010只提供過載long,long long,long double,unsigned long。不包括int。您需要使用,而不是一個兼容類型:

static_cast<long long>(i)

這條線將是您使用的編譯器成爲

string num = to_string(static_cast<long long>(i));