静的関数を持つクラスがあるとしましょう。この関数は、クラス オブジェクトをインスタンス化せずに、コードの別の部分によって static として呼び出されます。ただし、この静的関数のコードには、変数 x への依存も含まれています。ただし、x は特定の値に初期化されるか、コンストラクターでクリアされるだけです。しかし、クラスのオブジェクトがインスタンス化されていないことを考えると、変数は未定義であると思います。それで、いくつか質問があります:
1)コンストラクターはまったく呼び出されていますか?
2) 変数 x は未定義ですか?
そのようなケースを回避するにはどうすればよいですか?
以下の例では、y を 25 にしたいのですが、それは可能なのでしょうか?
class CExample
{
public:
CExample(void);
~CExample(void);
static void foo();
int x;
};
CExample::CExample()
{
x = 5;
}
void CExample::foo()
{
int y = x*5;
}