上書きしている仮想プライベート メソッドで呼び出されている保護されたメソッド (仮想ではない) のリンク エラー (未解決の外部シンボル) があります。リンクエラーは、保護を公開に変更することで解決しますか? それに関する情報は見つかりませんでした。物事は次のようになります:
class Base{
protected:
void Finish();
private:
virtual void VOnUpdate()=0;
};
class Derived: public Base{
private:
virtual void VOnUpdate(){
Finish();// unresolved Finish() being called
}
};
私が行ったいくつかのテストでは、ヘッダー ファイル (Base が宣言されている場所) で Finish() を定義すると、問題も解決されると結論付けました。しかし、Finish には Base を含むインクルードが必要なので (循環参照が発生する可能性があります)、私はそれを望んでいませんし、できません。ただし、この循環的なことは問題ではないことに注意してください。確認のためにダミーのメソッドを作成しました。これにより、リンクエラーも発生します。私は無知です。