创建一个列表以在C ++中保存对象

时间:2013-08-01 16:22:51

标签: c++

请原谅我,如果这看起来有点幼稚,但我对C ++很陌生,经过多年的C和Java,我想我的头脑有点困惑。

我正在尝试创建一个未知大小的数组,其中包含我已创建的节点。

node *aNode = new node(14,32);
std::list<node> dataSet;
std::list<node>::iterator it;
it = dataSet.begin();
dataSet.insert(it, aNode)

但是,当我编译它(概念验证测试)时,它会拒绝,抛出各种错误。

我知道这很简单,我无法理解。 有人可以帮忙吗?提前谢谢!

编辑: 这是节点:

class node{
    float startPoint;
    float endPoint;
    float value;
public:
    node(float, float);
    void setValues(float, float);
};

node::node(float start, float end){
    startPoint = start;
    endPoint = end;
}

和编译器错误:

  

错误C4430:缺少类型说明符 - 假设为int。注意:C ++没有   支持default-int

     

错误C2371:'it':重新定义;不同的基本类型

     

错误C2440:'初始化':无法转换   '的std ::列表&LT; _Ty&GT; :: _迭代&LT; _Secure_validation&GT;'到'int'

     

错误C2146:语法错误:缺少';'在标识符'dataSet'之前

     

错误C2143:语法错误:缺少';'在'。'之前。

     

错误C4430:缺少类型说明符 - 假设为int。注意:C ++没有   支持default-int

     

错误C2371:'dataSet':重新定义;不同的基本类型

更新: 我将一点点代码更改为:

 node aNode(14, 32);
 std::list<node> dataSet;
 dataSet.insert(dataSet.begin(), aNode);

但这3个错误仍然存​​在:

 error C2143: syntax error : missing ';' before '.'
 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
 error C2371: 'dataSet' : redefinition; different basic types

5 个答案:

答案 0 :(得分:5)

您的列表应该是std::list<node*>类型,或者您应该插入一个节点对象(而不是指向一个节点对象)。

node *aNode = new node(14, 32);
std::list<node*> dataSet;
dataSet.insert(dataSet.begin(), aNode);

node aNode(14, 32);
std::list<node> dataSet;
dataSet.insert(dataSet.begin(), aNode);

答案 1 :(得分:1)

看起来你需要声明你的列表包含节点指针,即:

std::list<node*> dataSet
std::list<node*>::iterator it;

另外值得注意的是,您可以在不使用迭代器的情况下将项添加到列表中:

dataSet.push_back(aNode);

答案 2 :(得分:1)

aNode是指向堆上节点对象的指针。

dataSet应定义为:

std::list<node*> dataSet;

与你的迭代器相同:

std::list<node*>::iterator it;

答案 3 :(得分:0)

对于您在最后一个括号后发布缺少分号的代码

dataSet.insert(it, aNode);

答案 4 :(得分:0)

“缺少类型说明符 - 假设为int” 可能是由于缺少

#include <list>

或遗失

#include "header for node"