私は同様の質問を読んだことがありますが、この問題は典型的なもの(静的デストラクタは呼び出されていない)とまったく反対のようです。私は静的なクラスメンバーとしていくつかのvarsを持っているC + +でゲームエンジンを書いています。しかし、静的メンバーのデストラクタは呼び出すときに呼び出されるため、イニシャライズや適切な使用はしていないようです。これは、メンバーの定義と宣言である:ここ静的デストラクタが早く呼び出される
static CRendering RENDER_PIPELINE;
(CDisplay.hで)
CRendering CDisplayCore::RENDER_PIPELINE;
(CDisplay.cppで)
はデストラクタ呼び出しを示す呼び出しスタックであり、私は、静的VARの一つの方法を使用した直後:
#0 ( Seventh::CRendering::~CRendering(this=0x7fffffffe5f0, __in_chrg=<value optimized out>) (/home/alberto/SeventhEngine/src/Rendering/CRendering.cpp:38)
#1 0x4152d9 Seventh::CEntity::UpdateGameLogic(this=0x8812f0) (/home/alberto/SeventhEngine/src/EntityCore/CEntity.cpp:109)
#2 0x416b68 Seventh::UpdateGameLogicGeneric<std::basic_string<char>, Seventh::CEntity*>(map=...) (include/functors.h:64)
#3 0x416968 Seventh::CEntityManager::UpdateGameLogic(this=0x63dc10) (/home/alberto/SeventhEngine/src/EntityCore/CEntityManager.cpp:65)
#4 0x413122 Seventh::CEngine::UpdateGameLogic(this=0x63dab0) (/home/alberto/SeventhEngine/src/Engine/CEngine.cpp:175)
#5 0x412fe6 Seventh::CEngine::RunGame(this=0x63dab0) (/home/alberto/SeventhEngine/src/Engine/CEngine.cpp:130)
#6 0x40e027 main(argc=1, argv=0x7fffffffe8d8) (/home/alberto/SeventhEngine/main.cpp:31)
はCEntityのコードは:: UpdateGameLogicです:
CDisplay::_Render().RenderTexture(...);
RenderTextureはCRenderingの方法です。 _Render()はメンバの静的ゲッタです。
何が問題なのですか?
編集_Renderの定義()
static inline CRendering _Render()
{
return RENDER_PIPELINE;
}
を望んでいますが、 '_Render()'の定義を示していただけますか?私は 'CRendering'オブジェクトの* copy *を返すことを賭けています。 –
@GregHewgill答えよりもはるかに優れています:)私はあなたを賭けに戻します。 – jrok
私は_Render()の定義を投稿しました。あなたは間違ったことを見ますか? –