我有
class Node
{
public:
string el1;
string el2;
string curr;
string name;
int ID1;
int ID2;
Node(){
//constructor is here
ID1=-1;
ID2=-1;
}
};
它有10个不同的节点用数组表示..
Node [] allNode=new Node[10];
for(i=0; i< 10; i++)
{
//create new node
allNode[i] = new Node();
std::string el = "f";
std::string el2 = "g";
std::string allNode[i].curr;
allNode[i].curr = name + boost::lexical_cast<std::string>(i);
cout << "Node name " << allNode[i].curr <<endl;
}
但是,我编译错误如下: -
error: expected unqualified-id before ‘[’ token referring to Node [] allNode=new Node[10];
error: ‘allNode’ was not declared in this scope
error: ‘name’ was not declared in this scope
请指教。感谢。
答案 0 :(得分:2)
在C ++中,您将方括号放在变量名后面,例如
Node allNode[10];
但是,在处理动态分配的数组时,请使用指针类型:
Node *allNode = new Node[10];
答案 1 :(得分:1)
代码中存在多个问题。首先new Node[10]
返回第一个对象的地址,因此您的语句应为Node* allNode = new Node[10];
。我不确定这句话的含义是什么:std::string allNode[i].curr
答案 2 :(得分:0)
错误来自这一行:
Node [] allNode=new Node[10];
应该是:
Node* allNode=new Node[10];
您也没有正确访问Node的成员。请参阅下面的示例代码:
int main
{
Node* allNodes = new Node[10];
for(i=0; i< 10; i++)
{
//create new node
allNodes[i] = new Node();
allNodes[i]->el = "f";
allNodes[i]->el2 = "g";
allNodes[i]->curr = name + boost::lexical_cast<std::string>(i);
std::cout << "Node name " << allNodes[i]->curr << std::endl;
}
delete [] allNodes;
}