2016-05-01 18 views
-4

私は簡単な質問があります。私のクラスにvectorの他のクラスオブジェクトがあり、そのオブジェクトの1つにあるメソッドにアクセスしたいが、[]オペレータを使用しないメソッドにアクセスするにはどうすればよいですか? g++は私にこれを与え、オブジェクトからメソッドへのアクセス

#include <iostream> 
#include <vector> 

class Sample 
{ 
    int label; 
    std::vector<int> int_vector; 
public: 
    int getLabel() 
    { 
     return label; 
    } 
    void writeDown() 
    { 
     int i=0; 
     for(auto it=int_vector.begin(); it!=int_vector.end();it++,i++) 
     { 
      std::cout<<(*it)<<std::endl; 
     } 
    } 
    Sample(int label, int tab[10]) 
    { 
     int i=0; 
     this->label=label; 
     for(int i=0; i<10; i++) 
     { 
      int_vector.push_back(tab[i]); 
     } 
    } 
    ~Sample() 
    { 
     std::cout<<"Object has been removed"<<std::endl; 
    } 
}; 

class Dataset 
{ 
public: 
    std::vector<Sample *> vectorOfSamples; 
    Dataset(Sample *sample) 
    { 
     vectorOfSamples.push_back(sample); 
    } 
};  




int main(int argc, char** argv) 
{ 
    int tab[10] = {1,2,3,4,5,6,7,8,9,10}; 
    Sample sample(5,tab); 
    Dataset dataset(&sample); 
    for (int i=0; i<5; i++) 
    { 
     dataset.vectorOfSamples.push_back(new Sample(i, tab)); 
    } 
    for (auto it=dataset.vectorOfSamples.begin(); it!=dataset.vectorOfSamples.end(); it++) 
    { 
     std::cout<<it.getLabel()<<std::endl; 
    } 
    return 0; 
} 

とするとき、私はそれを実行します:it->getLabel()にそれを変更する

​​

は私にこれを与える:

enter image description here

私はこのようなコードを持っています

どうすれば動作させることができますか?

+1

質問にスクリーンショットを投稿しないでください。代わりに、エラーメッセージをコピーして貼り付けます。 –

+0

'cmd'からどのようにコピー&ペーストできますか? – Frynio

+0

@LogicStuff私はあなたの最初の作品は思えません。 ' - >'は '*'より優先度が高くなります。 –

答えて

2
for (auto it=dataset.vectorOfSamples.begin(); it!=dataset.vectorOfSamples.end(); it++) 
{ 
    std::cout<<(*it)->getLabel()<<std::endl; 
} 

は、あなたのイテレータを逆参照する必要があります。

関連する問題