2016-04-12 32 views
0

Yüklemede dinamik kitaplığımı çökerten aşağıdaki kurulum yapıyorum.Statik Şablon Üyesi Kilitlenme Sayısı

// 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 ve B arasındaki mirasın burada içe aktarılmaması gerekir, değil mi? Statik nesnelerin başlatılması sırasına göre bir şeyler okudum ama aslında birden fazla statik nesneye sahip olmadığımdan, gerçekten sadece bir tane var, bunun burada önemli olduğunu düşünmüyorum.

Bir fikrin var mı, burada sorun ne olabilir?

+0

Çakma hakkında daha fazla bilgi var mı? – sebap123

+0

Ehm, bu bir erişim ihlalidir ve hata ayıklayıcısından çıkabileceğim şey, işlev başlangıcının bir nesne olmadan çağrılmasıdır. Tüm değişkenler saçma ve "bu" hiçbir şeye işaret eder. –

+1

Statik başlatma sırası fiasco'nun oyuna girip girmediğini merak ediyorum – NathanOliver

cevap

0

DÜZENLEME: Yığın taşması. Şimdi derleyicinin neden yığın üzerinde statik bir üye nesne koymaya karar vereceğini bulmalıyım.

İlgili konular