静的メンバーはconstとして宣言できますが、宣言で初期化する必要があります。ループ内のコードで初期化される静的配列の次の場合を考えてみましょう。ループで初期化されるstatic constクラス値を作成する方法はありますか?
class A {
private:
enum { SIZE = 360 };
static double* vertices;
public:
static void staticInit();
};
double* A::vertices = new double[SIZE];
void A::staticInit() {
double a = 0, b = 0;
for (int i = 0; i < SIZE; i++, a += .01, b += .02)
vertices[i] = sin(a) + c2 * sin(b);
}
上記のコードは機能します。しかし、頂点を定数にすることが意図されている場合、それをconst宣言するとstaticInit関数でコンパイルエラーが発生します。
古いC++では、ポインタconstを宣言してこの関数内で非constにキャストしますが、今日ではコンパイラは安全でないためこれを許可しません。もちろん、ポインタconstを宣言することはさらに危険ではありません。
清掃方法はありますか?
ありがとうございます、はいまだ "古い" C++の反射があります – Dov