所以,我在大约 3 年里没有过多地使用 C++,现在我在将继承的类与 STL 容器一起使用时遇到了一些麻烦。我已经看到这种问题被问了几次,但无法准确理解正在做什么,或者当我的代码与答案非常相似时为什么我的代码不起作用。
基本上我有两个类,R 和 RD,R 是基类,RD 是派生类。每个元素都有它的邻居,有点像一个图,所以元素 r1 的邻居可以是 R 类或 RD 类。我以为我已经通过在 R 中创建一个私有双端队列来解决这个问题,但是每当我访问所述双端队列中的元素时,它们永远不是 RD,只有 R。我的代码有点像这样:
class R {
public:
R();
~R();
inline void queue(R* r) { neighbours.push_back(r); }
inline R& getFirstNeighbour() { return neighbours.top(); }
virtual void printSomething() { cout << "R" << endl; }
protected:
deque<R*> neighbours;
}
class RD: public R {
public:
RD();
~RD();
void printSomething() { cout << "RD" << endl; }
void doSomethingElse();
}
每当我得到一个元素的第一个邻居并调用 printSomething 时,我总是得到 R。我在这里做错了什么?这应该怎么做?
非常感谢