そのため、約 3 年間 C++ をあまり使用しておらず、継承したクラスを STL コンテナーで使用する際に問題が発生しています。この種の質問が数回出されたのを見たことがありますが、何が行われているか、または回答と非常に似ているのになぜ私のコードが機能しないのかを正確に理解できませんでした。
基本的に、R と RD の 2 つのクラスがあります。R は基本クラスで、RD は派生クラスです。各要素にはグラフのような種類の隣接要素があるため、要素 r1 の隣接要素はクラス R または RD のいずれかになります。Rでプライベートdequeを作成することで解決したと思いましたが、そのdequeの要素にアクセスするたびに、それらは決して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 を取得します。ここで何が間違っているのでしょうか? これはどのように行うべきですか?
どうもありがとう