たくさんのvoidメソッドを作成し、プログラムの後半でそれらを呼び出そうとしています。問題をよりよく理解するために、先にコードを示します。
.h file
static float sfloat;
namespace someNamespace
{
static void foo();
}
.cpp file
void someNamespace::foo(){cout<<sfloat<<endl}
- 上記のコードは、私が取り組んでいたクラスのより単純なバージョンです。
他の.cppファイルでsfloatを初期化します
otherFile.cpp
void initializeAndUseFoo(){sfloat = 5; someNamespace::foo();}
私の理解では、fooは5を出力することを期待していますが、代わりに0を出力します。この動作は、私が持っている他のすべての静的変数(ポインターを含む)でも発生します。どういうわけか、関数内の変数は、私が割り当てた値として初期化されないようでした。
ただし、関数を介さずに「sfloat」を呼び出すと、適切に呼び出すことができます(コンソールで印刷するだけの場合)
cout<<"just print it not through the function : " <<sfloat<<endl;
それからそれは確かに5です
読んでくれてありがとう。