この質問は、ここでその後に尋ねられた質問と密接に関連しています。
クラス内定数を定義する方法は、Stroustrup によって ここで説明されています。
Stroustrup の方法に従うと、期待どおりの結果が得られます。ただし、Visual Studio 2010 では、デバッガーはstatic const
そのクラスのスコープ内でクラス メンバーを解決できません。これが私が意味することです:
#include <iostream>
class Foo {
public:
static const int A = 50;
char arr[A];
void showA();
};
void Foo::showA() {
std::cout << "showA = " << A << "\n";
}
int main() {
Foo f;
f.showA();
}
デバッガーが showA() にある場合、「ウォッチ」ウィンドウは次のように報告します。
Error: Symbol "Foo::A" not found
プログラムが期待どおりに動作することを強調したいと思います。つまり、出力は次のようになります。
showA = 50
プログラムは 0 を返します。
他の誰かが Visual Studio 2010 でこれを再現できますか? これはデバッガのバグですか?