C++では、クラスインスタンスを通じて静的メンバー変数にアクセスしない理由はありますか?私はJavaがこれを嫌に思っており、C++で重要かどうか疑問に思っていました。例:C++:クラスまたはインスタンスを介してconstメンバーにアクセスできますか?
class Foo {
static const int ZERO = 0;
static const int ONE = 1;
...
};
void bar(const Foo& inst) {
// is this ok?
int val1 = inst.ZERO;
// or should I prefer:
int val2 = Foo::ZERO
...
};
私には2番目の質問があります。静的なdoubleを宣言すると、どこかで定義する必要があり、その定義はその型を繰り返す必要があります。なぜタイプを繰り返さなければならないのですか?たとえば :
In a header:
class Foo {
static const double d;
};
In a source file:
const double Foo::d = 42;
は、なぜ私は私のCPPファイルの「constのダブル」の部分を繰り返さなければならないのですか?
正確な重複はありませんが、おそらく同じ回答が当てはまると思います。http://stackoverflow.com/questions/840522/given-a-pointer-to-ac-object-what-is-the-preferred-way -to-call-a-static-membe –
はい。インスタンスではなく接頭辞としてクラスを好むべき理由のために、アダム・ローゼンタールの答えを読んでください。 – quark