2016-12-22 8 views
-1

の値をしたい:印刷テンプレート

template<typename T> 
void printWithEndl(T) 
{ 
    std::cout << T << "\n"; 
} 

を、私はライン上で、このエラーを得た:私はの値をCOUTできる方法wounder

std::cout << T << "\n"; 

T.

ありがとうございます。

+2

変数に名前を付けるのを忘れました。タイプだけでは不十分です。 – NathanOliver

+0

'typeid(T).name()'を実行することはできますが、必ずしも有用なものではありません。 –

+0

私は彼がテンプレートのそのインスタンスで使用されているタイプを印刷したいと思います。 "int"、 "char"、またはインスタンス化に使用されたもの。可能であれば、標準のC++ではわかりません。 – Desaroll

答えて

6

あなたはcoutその名前をあなたはprintWithEndlに渡している変数に名前を付け、必要があります。

template<typename T> 
void printWithEndl(T t) 
{ 
    std::cout << t << "\n"; 
} 

あなたは複雑なオブジェクトを印刷するには、これを使用している場合、あなたはおそらくpassing a reference to const方がいいでしょう:

template<typename T> 
void printWithEndl(const T& t) 
{ 
    std::cout << t << "\n"; 
} 
+1

変数名と型名を大文字と小文字で区別することは、プログラミング上の習慣としては不適切です。 –

+0

@ThomasあなたはOPの答えから何を言っているのですか? –

+1

あなたの答えでは、あなたはデータ型 'T'と変数' t'を持っています。これらの名前の1つは別の名前にする必要があります。 –