-4

m_String という名前の static public メンバーを持つクラス Rules() があります。
適切な CString を使用して、そのメンバーをクラスに定義します。
グローバル関数からそのメンバーを使用したい
場合、コンパイル時に「Rules::m_String」を使用すると、次のエラーが発生します。

Rules.obj : エラー LNK2001: 未解決の外部シンボル "public: static class ATL::CStringT > > Rules::m_String" (?m_String@Rules@@2V?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ ATL@@@@@ATL@@A)

これは、m_String を設定するルール内の関数も静的にする必要があることを意味するのでしょうか?

4

1 に答える 1

4

ほとんどの場合、Rules::m_String定義済み (宣言Rules.cppされていない) のインスタンスがなく、コンパイル ユニットで初期化されていません。

Rules.cpp関数定義の外側に次のような行がありますか?

CString Rules::m_String = CString("Whatever initial value required");

もっと多くのコードを示さなければ、他に何も言うのは難しいです。

于 2012-11-08T17:27:28.477 に答える