来自' int'的转化无效到#char; char *'问题C ++

时间:2014-03-25 02:20:20

标签: c++ netbeans

问题出现在我的ToDoList.cpp类文件中。

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;
};

3 个答案:

答案 0 :(得分:2)

你应该使用

array = new string[arraySize];

array = new string[todolist.arraySize];

在您的示例中,您尝试创建一个无效的std :: string类(string(arrraySize))对象。编译器给出了相应的错误来理解它。

修改

您的课程可以使用std :: vector编写,这是一种高效正确且易于理解的代码。

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;
    }
}

答案 1 :(得分:2)

如果您想要一个字符串数组,请使用

array = new string[arraySize];

答案 2 :(得分:1)

没有std :: string构造函数只有一个长度。如果要初始化包含其中某些内容的字符串,则需要说出要使用的字符。你可以使用新的字符串(arraySize,fillCharacter),但考虑到这种用法,也许std :: vector可能更合适。

编辑:额外的细节显示您正在尝试做一些不同的事情。所以看其他答案。但是看起来你正试图重新发明一个向量&lt; string&gt; ,所以你可能会发现使用std :: vector更容易,而不是手动分配你的字符串数组。