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 回答