2014-03-25 78 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]; 
相关问题