プロが教える店舗&オフィスのセキュリティ対策術

ヘッダーファイル内でconst変数を初期化する場合、
以下のようにしているのですが、エラーが出てしまいます。
どのようにすればうまくいくのでしょうか?
環境はVisualC++.NETです。

class abc{
private:
 const int x;
public:
 abc(){
  x = 10;
 }
}

A 回答 (3件)

class abc{


private:
 const int x;
public:
 abc() : x(10) {}
}
    • good
    • 0

class abc{


private:
 static const int x = 10;
public:
 abc(){
 }
}
    • good
    • 0

エラーが出るのは、const 型の変数(実は定数)に代入をしているからですね。



No.1 の方の方法が普通使われます。
これは、(代入ではなく)「初期化」なので、文字通り初期化の使えます。
この場合の、() の中は、定数である必要はないので、

abc(int n) : x(n) { }

のような構文も可能です。

No.2 の方の方法は、意味としては(x が static メンバーになるので)異なってきますが、すべてのインスタンスで、定数である 10 で初期化するのであれば、(どのインスタンスから見ても、x が 10 であることしかわからないので)実際上は、同じになります。

参考URL:http://www.st.sakura.ne.jp/~taka/C++/3.htm
    • good
    • 0
この回答へのお礼

なるほど。勉強になりました。
URLも参考にさせていただきます。
ありがとうございました。

お礼日時:2005/08/23 09:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!