0

上書きしている仮想プライベート メソッドで呼び出されている保護されたメソッド (仮想ではない) のリンク エラー (未解決の外部シンボル) があります。リンクエラーは、保護を公開に変更することで解決しますか? それに関する情報は見つかりませんでした。物事は次のようになります:

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 を含むインクルードが必要なので (循環参照が発生する可能性があります)、私はそれを望んでいませんし、できません。ただし、この循環的なことは問題ではないことに注意してください。確認のためにダミーのメソッドを作成しました。これにより、リンクエラーも発生します。私は無知です。

4

0 に答える 0