2009-10-23 7 views
1

jeCompile erreur id non qualifiée avant

class Node 
{ 
public: 

string el1; 
string el2; 
string curr; 
string name; 
int ID1; 
int ID2; 

Node(){ 
//constructor is here 
ID1=-1; 
ID2=-1; 
} 

}; 

Et il a 10 noeuds différents représentés avec tableau ..

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; 

} 

Cependant, j'ai erreur de compilation comme ci-dessous: -

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 

Veuillez nous aviser. Merci.

+0

Martin formaté le code source pour vous, mais vous devez formater vous-même si il est plus logique et vous pouvez facilement repérer les erreurs dans quand vous avez tous les onglets et les retours .. – Zenuka

Répondre

1

Il y a plusieurs problèmes dans le code. Premier new Node[10] renvoie l'adresse du premier objet, votre instruction doit donc être Node* allNode = new Node[10];. Et je ne suis pas sûr quelle est la signification de cette déclaration: std::string allNode[i].curr

2

En C++, vous mettez les crochets après le nom de la variable, par ex.

Node allNode[10]; 

Cependant, lorsqu'ils traitent avec des tableaux dynamiquement alloués, utilisez un type de pointeur:

Node *allNode = new Node[10]; 
0

L'erreur provient de cette ligne:
Node [] allNode=new Node[10]; qui devrait être:
Node* allNode=new Node[10];

Vous n'accédez également pas correctement aux membres de Node. Voir ci-dessous pour exemple de code:

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