之前编译错误unqualified-id

时间:2009-10-23 07:37:49

标签: c++ compiler-errors

我有

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

请指教。感谢。

3 个答案:

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