次の簡単なコードを使用してください。
class A{
public:
virtual void foo() = 0;
void x(){ foo(); }
};
class B: public A{ foo(){ ... } };
main(){
B b;
b.x();
}
私が望むのは、派生クラスで実装されることを期待する関数を呼び出す関数を持つ抽象クラスを構築することです
問題は、私がそれを機能させることができないということです。コンパイラは、foo() への参照 (またはそのようなもの) が x() で実行されるのを見つけることができないため、コンパイルできないと言います基本クラス。これは機能しますか?誰かが私にこれの例を教えてもらえますか?
編集:「foo();」の場合は機能しないようです クラスA(ベースのもの)のデストラクタの中にあります...
それは私を混乱させました。=[
EDIT2:これはどれほど興味深いものでしたか。callfoo(){ foo(); を作成しました。これで問題なくコンパイルできますが、基本クラス A のデストラクタ内から純粋な抽象関数を直接呼び出そうとすると、エラーが発生します... 変です。誰でもこれについて何か考えがありますか?O_o
これについて何か助けてください。
ありがとう、
ジョナサン
アップデート
デストラクタの外で機能しました。今、私は混乱しました。
A(ベース)クラスのデストラクタ内に「foo()」を入れてみてください。少なくとも私はコンパイルしていません...
助けてください。