Ошибка компиляции без идентификатора перед - PullRequest
1 голос
/ 23 октября 2009

у меня

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 ]

2 голосов
/ 23 октября 2009

В C ++ вы ставите квадратные скобки после имени переменной, например,

Node allNode[10];

Однако при работе с динамически размещаемыми массивами используйте тип указателя:

Node *allNode = new Node[10];
1 голос
/ 23 октября 2009

В коде много проблем. First new Node[10] возвращает адрес первого объекта, поэтому ваше утверждение должно быть Node* allNode = new Node[10];. И я не уверен, что означает это утверждение: std::string allNode[i].curr

0 голосов
/ 23 октября 2009

Ошибка исходит из этой строки:
Node [] allNode=new Node[10]; Который должен быть:
Node* allNode=new Node[10];

Вы также неправильно обращаетесь к членам Узла. Ниже приведен пример кода:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...