0

プライベート変数とメソッドを非表示にするために、オブジェクト ポインター リストがクラスの内部クラス (内部/ネストと呼ばれる) にあるベクトルにある場合、オブジェクト メソッド (getName とその名前を取得) を呼び出す方法を尋ねたいと思います。ここまで書いてきた内容です。すべてのオブジェクトを印刷する方法がわかりません:

   bool Program::checkCategory(string name){
      vector<Category> *ptr = &(impl->categories);
      int i;
      for (i = 0; i < ptr->size(); i++){
         cout << ptr->at(i).getName() << endl;
      }
      return 0;
   }
4

2 に答える 2

2

あなたが含めた小さなスニペットにはいくつかの問題があります。重要度の降順:

  • ループの前i++に、コンマではなくセミコロンが必要です。for

  • ベクトルが実際にオブジェクトへのポインタを保持している場合はptr->at(i)->getName()、 ではなくを呼び出す必要がありますptr->at(i).getName()。その場合、(ほとんどの場合) ベクトルをvector<Category*>ではなくとして宣言する必要もありvector<Category>ます。

  • ベクトルにアクセスするためにポインターを使用する必要はありません。ベクトルの短い名前が必要な場合は、参照を使用できますvector<Category>& vec = impl->categories。これにより、ベクトルの配列ではなく単一のベクトルのみを参照していることが読者に明確になり、メソッド呼び出しごとにベクトルを逆参照する必要がなくなります。

于 2013-11-11T17:13:55.100 に答える
2

これがあなたの問題の全範囲であるかどうかはわかりませんが(ほとんど良さそうです)、セミコロンが必要だと思います:

あなたが持っている:

i = 0; i < ptr->size(), i++

ただし、コンマではなくサイズの後に必要です。

i = 0; i < ptr->size(); i++
于 2013-11-11T17:14:05.970 に答える