各ファイルに#include "stdafx.h
が省いてあります。LNK2005を入手すると、私はこれを修正するために何ができるのかわかりません
struct stuff
{
float f;
thing * t;
};
b.h
STDAFX.H(プリコンパイル済みヘッダー)
#include a.h
#include b.h
class stuff;
stuff * s
a.h
class thing{float f; void fun()};
a.cc
void thing::fun(){}
thing::thing():
f(b->f) {} // lnk 2005 linking error
あなたが見ることができるように、私はstdafx.hを
に事前宣言されs
にアクセスしようと、私は私ので、この設計を
b.cc
stuff::stuff(): f(3.4) { t = new thing; }
main.cc
int main()
{
s = new stuff;
s -> fun();
}
をやっていますシングルトンに頼る必要はありません(他の小さなオブジェクトでアクセスしたいメインクラスが1つあります)
何らかの方法でextern
キーワードを使用する必要がありますか?プリコンパイル済みヘッダーに問題がありますか?
確かにあなたが '#include" ah "'を意味する – Bart
クリップボードを使ってコードを質問にコピーしてください。少なくとも1つの構文エラーがあります。エラーの原因であることを示す行が間違っています(私はそれが 'f(s-> f){}'でなければならないと信じています)。このようなタイプミスは、問題が本当に何であるかを知ることが難しくなる可能性があります。 –
それは正確なコードではなく、私のコードプロジェクトははるかに大きいです、私はちょうど私の問題を記述するための例としてこのコードを使用しました。私のプロジェクトのコードをすべて貼り付ける余地はありません。 – jokoon