2014-03-25 101 views
0

問題發生在我的ToDoList.cpp類文件中。無效的從'int'轉換爲'const char *'問題C++

ToDoList.cpp:

ToDoList::ToDoList() { 
    arraySize = 3; 
    arrayData = 0; 
    array = new string(arraySize); //error here 
} 
ToDoList::ToDoList() { 
    array = new string(todolist.arraySize); //and error here 
    arraySize = todolist.arraySize; 
    arrayData = todolist.arraySize; 
} 

ToDoList.h:

class ToDoList { 
public: 
    ToDoList(); 
    ToDoList(const ToDoList&); 
    ~ToDoList(); 
    void AddItem(string item); 
    void ListItems(); 

private: 
    string* array; 
    int arraySize; 
    int arrayData; 
}; 
+0

你想新的字符串[todolist.arraySize(); – Ben

回答

1

有沒有的std :: string構造函數只是一個長度。如果你想用一些東西來初始化一個字符串,你需要說出使用什麼字符。你可以使用新字符串(arraySize,fillCharacter),但考慮到這種用法,std :: vector可能更合適。

編輯:額外的細節表明你正在嘗試做不同的事情。所以看到其他答案。然而,它看起來像你試圖重新發明一個向量<字符串>,所以你可能會發現它更容易使用std :: vector而不是手動分配你的字符串數組。

+0

是的,這樣會更容易些,但是我們還沒有在我們的課程中說過,所以我可以在我的代碼中使用它。 – tmricks94

2

您應該使用

array = new string[arraySize]; 

array = new string[todolist.arraySize]; 

在你的榜樣,你要創建std :: string類(字符串(arrraySize)),這是無效的對象。編譯器提供了相應的錯誤來理解它。

編輯

你的類可以使用的std ::載體,它是有效的正確的和易於理解的代碼編寫。

class ToDoList { 
public: 
    ToDoList() {}; 
    ~ToDoList() {}; 
    void AddItem(std::string& item); 
    void ListItems(); 
private: 
    std::vector<std::string> array; 
}; 

void ToDoList::AddItem(std::string& item) { 
    array.push_back(item); 
} 

void ToDoList::ListItems() { 
    for(size_t i = 0; i<array.size(); i++) { 
     std::cout<<array[i]<<std::endl; 
    } 
} 
+0

但是你應該開始使用std :: vector 。 –

+0

你先生是個天才。它始終是我得到的小事... – tmricks94

2

如果你想要一個字符串數組,使用

array = new string[arraySize]; 
相關問題