ここには最小の例があります。私はDerivingクラスを知る必要があるBaseクラスを持っています。次にDerivingクラスはBaseクラスを知る必要があります。どうやって定義すれば、互いの存在を知ることができますか? error: 'Deriving' does not name a type
にBase
最初のリード線の定義:ここでオブジェクトを派生させるポインタを持つ基底クラス:お互いの存在の両方をどのように伝えるか?
class Base {
Deriving* d;
public:
Base(Deriving* deriving) {
d = deriving;
}
void f() {
d->g();
}
};
class Deriving : public Base {
public:
Deriving() : Base(this) {}
g();
};
は、私が試したし、どのようなコンパイラが言ったことです。 Deriving
を定義すると、最初にerror: expected class-name before '{' token
になります。不完全なタイプのBase
またはDeriving
を宣言すると、error: invalid use of incomplete type 'class X'
になります。私は他に何を試していいのかわかりません。
ご協力いただきまして誠にありがとうございます。
なぜそれが理由だけ」へのポインタを取らない、「導出」を知っておく必要がありませんベース*"? – kfsone
私のプログラムでは、ある理由のために、同じDerivingオブジェクトを指す多くのBaseオブジェクトが存在することがあります。 – mak
*オブジェクト*インスタンスまたはクラス定義を意味しますか? – kfsone