2016-09-29 58 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的项目。

相关问题