2016-09-29 13 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 
    } 
} 

Nodeクラスのフィールド

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について

、使用: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; 
} 

、使用:

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

は同様の変化がinの項目を反復することを可能にします。

関連する問題