constメンバの初期化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kazuoni

constメンバの初期化

#1

投稿記事 by kazuoni » 16年前

お邪魔します。
抽象的なタイトルしかつけれませんでした。。

まず下のコードを見てください。
class x{
private:
	const int abc;
public:
	x();
	~x() {}
}

x::x()
{
	y::CreateInstance();//シングルトンclass y の生成、初期化
	abc(y::accesser());//初期化するにも上には持って行けない・・・
}
やりたいことは、シングルトンクラスy生成後、
yのアクセッサで戻ってくる値でクラスxのメンバabcを初期化したいのです。
もちろん上のようには書けません。
どうしたらうまく初期化ができるのでしょうか?
もし不可能だとしたらどうしたらよいでしょうか?

自分なりに考えて、クラスを作りました。
一度代入されたらそれ以後は代入を受け付けない
っというようなものです。(constをまねする感じです)
が、これだと、どこで一番最初に代入されたのかが分かりづらくなります。
なので、このクラスは廃止しました。。

よろしくお願いします。

kazuoni

Re:constメンバの初期化

#2

投稿記事 by kazuoni » 16年前

・・・シングルトンクラスの生成、初期化を前にずらすが一番なんですかね?^^;

Justy

Re:constメンバの初期化

#3

投稿記事 by Justy » 16年前


>どうしたらうまく初期化ができるのでしょうか

 技術的には
 
x::x()
: abc((y::CreateInstance(), y::accesser()))
{
}

でできますが、根本的にこのシングルトンを事前に生成しておくのがいいかと
思います。

 あるいは、accesser()の中でシングルトンを生成してしまっても
いいかもしれません。

kazuoni

Re:constメンバの初期化

#4

投稿記事 by kazuoni » 16年前

Justyさん、ご回答ありがとうございます!

>根本的にこのシングルトンを事前に生成しておくのがいい
自分もそう思いました^^;
初期化はやはりその意味のみを持たせたほうがいいですね。
今回は事前に生成っということで解決にさせていただきます。

ご回答ありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る