如何从指向对象的指针列表中调用对象方法,这是在向量中?

时间:2013-11-11 17:04:57

标签: c++ pointers reference

我想问一下如果我的对象指针列表在我的类的内部类(这被称为内部/嵌套)的向量中隐藏私有变量,那么如何调用对象方法(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;
   }

2 个答案:

答案 0 :(得分:2)

您收录的小片段有几个问题。通过降低重要性顺序:

  • i++循环for之前,您需要分号而不是逗号。

  • 如果向量确实包含指向对象的指针,则需要调用ptr->at(i)->getName(),而不是ptr->at(i).getName()。在这种情况下,您(很可能)还需要将向量声明为vector<Category*>,而不是vector<Category>

  • 无需使用指针访问向量。如果您想要矢量的较短名称,可以使用引用vector<Category>& vec = impl->categories。这使读者清楚地知道您只引用单个向量而不是向量数组,并且无需为每个方法调用取消引用向量。

答案 1 :(得分:2)

不确定这是否是你问题的全部范围(看起来大多数都很好),但我认为你需要一个分号:

你有:

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

但你需要大小而不是逗号:

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