[過去ログ] 物凄い勢いで誰かが質問に答えるスレ@ゲーム製作技術 (1001レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
971
(2): 名前は開発中のものです。 [sage] 02/06/28 19:59 ID:??? AAS
>>967
967(3): 名前は開発中のものです。 [age] 02/06/28 13:40 ID:??? AAS
GameProgrammingGemsのセクション1.3 自動シングルトンユーティリティ
で、下のコードがなにをやってるのかわかりません。誰か説明してくれませんか?
template<typename T> class Singleton
{
static T* ms_Singleton;
public:
Singleton()
{
int offset = (int)(T*)1 - (int)(Singleton<T>*)(T*)1;
ms_Singleton = (T*)((int)this + offset);
}
...
}:
クラステンプレート自体のサイズとTのサイズを足したものをシングルトンに
割り当ててるのかな?と思いますが、newした時点で割り当てられたアドレスの
後方を指してるような気がして不安です。よろしくお願いします。
C++の内部構造はよくわからないが
offsetってのは、その名の通りSingleton<T>クラスのインスタンスのポインタから
Tクラスのインスタンスのポインタへのオフセットだろう。
1って数字は問題じゃない。いくつでもいい、
0で無い事に意味がある。本の受け売りだけどな。
んで、
(T*)((int)this + offset);
は、新たにSingleton<T>クラスのインスタンスが生成されたとして
そのSingleton<T>のインスタンスに属する?Tクラスのインスタンスの位置を
求めてる訳だ。
それをスタティックの箱に入れてやると。
つまりms_Singletonには、最後に生成されたTクラスのインスタンスのポインタが
入ることになる。
・・・と思う。間違ってたら誰かフォローよろしこ。
1-
あと 30 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s