次の2つのクラスがあります。
コンストラクター Foo(Bar*, int, int) を持つ Foo
new Foo(this, int, int) を呼び出す Bar
Bar.h で Foo および/または Foo.h で Bar を前方宣言すると、問題が解決すると想定しました。
(返されるエラーは、新しい Foo の「未定義の参照」です)
私はコンパイルにClangを使用しています。
そのままのリンク順序 (ただし、どちらの場合も同じエラーが発生します) は、Foo の次に Bar です。
私が間違っていることについて何か考えはありますか?
コードはおおよそ次のとおりです。残念ながら、実際のコードフラグメントを表示できません
#include Bar.h
class Bar ;
class Foo {
public:
Foo(Bar* bar, int arg1, int arg2) ;
void method1() {
I access bar->field here
}
Bar のコードは次のとおりです。
#include Foo.h
class Bar {
public:
Bar() {
Cache* cache = new Cache(this, 0, 0) ;
}