c++ - 如何从 vector 中的指向对象的指针列表中调用对象方法?

标签 c++ pointers reference

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

最佳答案

您包含的小片段有几个问题。按重要性降序排列:

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

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

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

关于c++ - 如何从 vector 中的指向对象的指针列表中调用对象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911889/

相关文章:

pointers - 范围引用而不是值

json - 将必填字段应用于引用的 JSON 数据架构

c++ - 编译器看不到参数

c++ - 使用 opencv 和 c++ 实时绘制二维图形

c++ - 拥有多态对象集合的首选 C++ 习惯用法是什么?

c - 在 C 语言中,为什么数组的地址等于它的值?

c++ - Quicksort 中相等值的比较

c - C/C++中通过指针访问多维静态数组

c - 为堆中的结构元素分配内存?

c++ - 为什么这段代码不起作用? (原型(prototype)中的 &array)