静态模板成员崩溃

Static Template Member Crashes

本文关键字:崩溃 成员 静态      更新时间:2023-10-16

我有以下设置,它会在加载时崩溃我的动态库。

// 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;

当然,A和B之间的继承在这里不应该很重要,对吧?我读过一些关于静态对象初始化顺序的东西,但由于我实际上没有多个静态对象,只有一个,所以我认为这在这里不重要。

你知道吗,这里可能有什么问题?

编辑:这是一个堆栈溢出。现在我必须弄清楚为什么编译器会决定在堆栈上放置一个静态成员对象,。。。