2016-09-29 4 views
0

Ich habe dieses Objekt mit Vektoren von Zeigern. Ich versuche, einen Zeiger zuzugreifen, aber ich kann es einfach nicht aus irgendeinem Grundkeine Übereinstimmung für 'Operator []' Fehler aus irgendeinem Grund

myNode.cpp:83: error: no match for 'operator[]' in '((MyProjectGraph::MyNode*)this)->MyProjectGraph::MyNode::out[i]'

myNode.cpp:88: error: no match for 'operator[]' in '((MyProjectGraph::MyNode*)this)->MyProjectGraph::MyNode::in[i]'

/** Bannana 
* bannana 
**/ 
void MyNode::toString(){ 
    cout<<"Name: "<<ltr<<"\nValue: "<<value<<"\nTime: "<<time<<endl; 

    cout<<"\n Outgoing To: "<<endl; 
    for(int i = 0; i < out.size(); i++){ 
     cout<<(out[i]->in->ltr)<<endl; //L 85 
    } 

    cout<<" Incoming To: "<<endl; 
    for(int i = 0; i < in.size(); i++){ 
     cout<<((in[i]->out)->ltr)<<endl; // L 88 
    } 
} 

Knoten Klassenfelder

std::list<MyEdge*> in; 
std::list<MyEdge*> out; 

Kantenklasse Felder

MyNode* in; 
MyNode* out; 
+3

operator [] ist nicht in std :: list definiert, wenn Sie es verwenden möchten, verwenden Sie stattdessen std :: vector –

Antwort

0

std::list nicht unterstützt die Array-Indizierung. Sie können über die Elemente einer std::list mit std::list::iterator oder Bereich für Anweisung iterieren.

Für Pre-C++ 11, zu verwenden:

std::list<MyEdge*>::iterator iter = out.begin(); 
std::list<MyEdge*>::iterator end = out.end(); 
for (; iter != end; ++iter) 
{ 
    cout << (*iter)->in->ltr << endl; 
} 

Für C++ 11 oder höher verwenden:

for (autu& item : out) 
{ 
    cout << item->in->ltr << endl; 
} 

Machen Sie ähnliche Änderungen über die Elemente von in iterieren.

Verwandte Themen