0
ロード時にダイナミックライブラリがクラッシュする以下の設定があります。静的テンプレートメンバーがクラッシュする
// in a.hpp
template <unsigned int Size>
class ATemplate : public A
{
public:
ATemplate() : A(Size)
{
init()
};
void init()
{
// does stuff, it crashes here or "before" init() because "this" points to some random memory,...
}
}
// in b.hpp
class B
{
public:
static const int Size = 128;
static ATemplate<Size> Template;
}
// in b.cpp
ATemplate<B::Size> B::Template = ATemplate<B::Size>();
// also crashes like this:
ATemplate<B::Size> B::Template;
Afaik、AとBの間の継承は、ここでは使用できません。私は静的オブジェクトの初期化の順序について物事を読んだことがありますが、実際には複数の静的オブジェクトを持っていないので、ここでは重要ではないと思います。
ここに問題がありますか?
クラッシュに関するこれ以上の情報はありませんか? – sebap123
ええと、それはアクセス違反です。デバッガから出ることができるのは、関数initがオブジェクトなしで呼び出されるということです。すべての変数はナンセンスであり、「これ」は何も指していません。 –
私は静的な初期化順序の失敗が起きているのだろうか – NathanOliver