2016-11-11 8 views
0

私は、テンプレート機能を使用して、変数はその後、int型と異なっている私は、文字列に必要な操作として、整数入力などからそれを区別するためのstd ::文字列型の場合は、テストの方法を必要としています。私はこれを行うためにtypeidを使用することに問題があります。C++変数がstd :: string型であるかどうかをチェックする方法?

+7

をあなたは通常、(部分)専門やオーバーロードを使用したいです/その変数がどのような型かを単に知っているだけです。 –

+0

さらなる文脈を提供できますか?どの変数をどのコンテキストでテストしてどの問題を解決するか? – Barry

+0

これは割り当てであり、テンプレート関数を使用するように指定されています。例えば、私は2つの数字を取り除く必要があるかもしれないが、別の単語から単語の一部分を取り除くこともできます。たとえば、pizzahutという単語があり、テンプレート関数の2つの変数がpizzahutとhutとして入力された場合は、ピザを返さなければなりません。今、問題は、私はintと文字列を区別する方法が必要な関数です。 – FreeLand

答えて

6

だけ過負荷:

template<typename T> 
void myFunc(T t) {/* */} 

void myFunc(std::string s) {/* */} 

異なる物事は、異なるタイプのために発生する必要がある場合、それはおそらく異なる関数にする必要があります。そうすれば、コードはタイプチェックで煩雑になることはありません。オーバーライドを型にマッチさせることについてコンパイラが心配するのを好むべきです。テンプレートのコンテキストであり、その後、あなたは完全に代わりに特化することができますmyFunc<T>(t)のようなあなたの機能をCALする必要がある場合は

:専門にして、

template<> 
void myFunc<std::string>(std::string s) {/* */} 
関連する問題