c++ - std::vector 的问题

标签 c++ stl vector

大家好, 我遇到了一个愚蠢的 C++ 问题。

假设我有一个名为 it1 的迭代器,它遍历包含指向某个类的指针的 vector 的值,我们称它为 C:

std::vector<C*>::iterator it1;

但 C 并不孤单:它有许多子类,它们共享我正在寻找的相同属性和方法 1,尽管它们的实现可能不同也可能相同。如果我希望迭代器遍历 C 类及其子类的元素(或更好的指针),我该怎么办?

我认为是使用模板的东西,尽管这会使迭代不安全,因为我不知道如何将模板仅限于 C 及其子类。有什么建议吗?

编辑:是的,我在谈论递归数据结构。

Edit2:好吧,看来这毕竟不是迭代器的错。我的代码运行良好,我问这个问题是因为我要对其进行更改,但我不确定该怎么做。抱歉,如果不清楚。

最佳答案

我想我明白你的意思了。 C 是您的基类,假设 A 和 B 派生自 C。但是 A 和/或 B 中的某些函数在 C 中不存在,这是您的意思吗?在这种情况下,您必须将 *it 向下转换为 A*B*。如果在特殊情况下应该这样做,那么 OK,否则你应该重新设计......

关于c++ - std::vector 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264709/

相关文章:

c++ - 标准 vector push_back' : 2 overloads have no legal conversion for 'this' pointer error

c++ - 在可变参数模板类中初始化静态数组

c++ - 可能 STL 迭代器方法抛出异常

c++ - 不同的值取决于 C++ 类型

c++ - STL容器的difference_type typedef

c++ - 我的 vector 实现中的错误

r - 有没有一种有效的方法来检查 R 字符向量是否包含相同的元素?

c++ - 将2个排序数组合并为 vector c++

c++ - 使用git安装多个版本的软件

c++ - 统计线程运行了多少次?