大家好, 我遇到了一个愚蠢的 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/