2016-09-29 60 views
0

我有一個向量指針的這個對象。我試圖訪問一個指針,但我就是不能出於某種原因由於某種原因,'operator []'錯誤無法匹配

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

節點類字段

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

邊緣類字段

MyNode* in; 
MyNode* out; 
+3

operator []未在std :: list中定義,如果要使用它,請使用std :: vector –

回答

0

std::list不支持數組索引操作。您可以使用std::list::iterator範圍對於語句迭代std::list的項目。

對於預C++ 11,可使用:

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

對於C++ 11或更高,使用:

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

作出類似的變化來遍歷的in的項目。

相關問題