このコードがクラッシュし、なぜ誰も説明できますか? mingwとubuntuの両方のウィンドウで同じ動作があります。デバッガパーテンプレートクラスの静的変数の初期化
パラメータ「」ひとつのコンストラクタに渡されたが、「アウト最適化」されています。私は静的メンバtwo_にアクセスしようとすると、
クラッシュが起こります。私はあなたがここに持っているものと信じて
#ifndef THREE_H
#define THREE_H
#include <string>
class One
{
public:
One(const std::string& a)
: a_(a)
{
}
std::string a_;
};
template<typename P>
class Two : public One
{
public:
Two()
: One(P::name)
{
}
std::string foo()
{
return a_;
}
};
template<typename T>
class Three
{
public:
struct Info
{
static std::string name;
};
typedef Two<Info> Two_t;
static Two_t two_;
};
template < typename T >
std::string Three<T>::Info::name = std::string("aaaa");
template < typename T >
typename Three<T>::Two_t Three<T>::two_ = Three<T>::Two_t();
#endif // THREE_H
あなたの最後の行の 'テンプレート'に 'T'が足りないことは確かですか?私はそれが私の前部罰金コンパイルすることを修正した場合:http://ideone.com/w5RFB8 –
は答えは最後に 'テンプレート' –
WhozCraig
に固定行方不明 'T'を想定する必要があり@JonathanMeeアプリがクラッシュします。 – orbitcowboy