2012-02-29 41 views
0

C++テンプレートにはあまり経験がありません。&に問題があります。おそらく、あなたは私がやっているばかげたエラーを見ることができます。ご協力ありがとうございました!VC++でテンプレートを使用するとC4430エラーが発生する

Constants.h:

#include "stdafx.h" 
#include <io.h> 
#include <sstream> 

class Constants 
{ 
public: 
    [...] 
    template<typedef const T> 
    static CString ToString(T VALUE); 
}; 

Constants.cpp:スタックオーバーフローに関する将来の参考のために

template<typedef const T> 
CString Constants::ToString(T VALUE) 
{ 
    stringstream ss; 

    ss << VALUE; 

    CString csRow = ss.str().c_str(); 

    return csRow; 
} 
+0

あなたが投稿見逃しているかどうかを確認しますエラーの質問には、行番号も含まれています –

答えて

4

、逐語的に任意およびすべてのコンパイルエラーをコピーアンドペースト、およびラインを指摘コードスニペットの数字。


C++を初めてお使いの方は、pick up a good introductory C++ bookをよく読んでお読みください。ここのC++タグwikiには、スタックオーバーフローに関するC++コミュニティの推奨書籍一覧があります。


投稿したコードスニペットには複数の問題があります。変更typedef const Ttypename T

とヘッダに定義を移動します:ここで私は、スニペットの目視検査から見ることができるものだ

class Constants 
{ 
public: 
    [...] 
    template<typename T> 
    static CString ToString(T value); 
    { 
     std::stringstream ss; // Note std:: prefix! 
     ss << value; 
     CString csRow = ss.str().c_str(); 
     return csRow; 
    } 
}; 

(あなたはまた、class Tの代わりtypename Tを使用することができ、彼らは両方で同じですこの場合)

コンパイラがCStringの定義を確認できるようにします。 You may need to include cstringt.hstdafx.hの場合は、すでにそれをしていません。

また、標準ライブラリタイプはstd名前空間に存在します。そのため、単にstringstreamの代わりにstd::stringstreamが存在します。また、using namespace std;を使用することもできますが、これをヘッダーファイルで使用することはできません。

変数とパラメータにUPPERCASE NAMESを使用しないでください。通常はマクロ用に予約されています。

+0

ありがとうございます! cstringt.hをインクルードすると、正しく実行されます! – Sae1962

0
C4430 C++ does not support default-int 

だけでエラーがポップアップ表示されている行をチェックアウトし、あなたはどんなタイプの変数宣言で指定子またはfubctions

0

使用型名またはクラスの代わりに、typedefで

関連する問題