2016-06-29 9 views
1

単純なメッセージテンプレートクラスを次のように作成します。私はchosen answer posted hereの逐語的な構造に従った。しかし、これは2013年テンプレートの特殊化:特定の型のみを受け入れるC++テンプレート

template<typename T> Message; 

template<> Message <std::vector<uint8_t>> 
{ 
public: 

}; 

template<> Message <std::string> 
{ 

}; 

のIntelliSenseが私に語っMessage is not a templateことのVisual Studioで壊れているようです。

わずかに良好で前方宣言結果にMessageclassを配置するが、均等に迷惑なIntelliSenseのエラー:各テンプレートの開口ブレース{expected and identifier

template<typename T> class Message; 

template<> Message <std::vector<uint8_t>> 
{ 
public: 

}; 

template<> Message <std::string> 
{ 

}; 

上記のコードはすべて現在、ヘッダーファイルに格納されています。

+0

これはうまくいくはずです(2番目の投稿コード)!より古いC++コンパイラは、 '>>'と '>>'の間にスペースを挿入する必要があることに注意してください。 ''ヘッダは含まれていますか?完全なエラーメッセージを投稿してください。 –

+1

宣言と特殊化の両方で 'Message'の前に' class'を置きます。 – lorro

+0

リンク先も固定です。 – Jarod42

答えて

1

classキーワードをテンプレートの特殊化に含める必要があります。なぜ私はリンクされた答えがそれをしないのか分かりません。

template<typename T> class Message; 

template<> class Message <std::vector<uint8_t>> 
{ 
public: 

}; 

template<> class Message <std::string> 
{ 

}; 
関連する問題