いくつかのスタックでは、この種の比較をいくつかの関数で使用する必要があります。しかし、このプロトタイプがどのように見えるかわからないので、私は立ち往生しています。テンプレートクラスとオーバーロード '=='
私は関数内に次の行があります。
template <class T>
void function1(T i)
{
if(i == 'a')
//do something
}
オーバーロードプロトタイプがどのように見えるのでしょうか。
EDIT 知らん、それは言及する価値がある場合は、とにかくこれは私がこれまで テンプレート
bool Stack<T>::operator==(char c) const
{
cout << c << endl; // just some test
}
私はまだそれを終えていないとして、この関数は、どのように機能するかをコメントする必要はありませんしようとしているものです。この部分はコンパイルされますが、この関数をStack :: push(T i)に初めて呼び出す部分ではコンパイルされます。コンパイラはこれに対応する関数がないと不平を言うでしょう。演算子をオーバーロードするため
error: no match for 'operator==' in 'i == '#''
は、あなたがこれまで試したどのような私たちを表示する:私はあなたがしている何を言うことができませんその質問から尋ねるが、例が明確になるかもしれない。 –
あなたの質問は明確ではありません。あなたのテンプレート関数は 'if'ステートメントが完了したときと同じようにうまくいきます。しかし、それは 'i == 'a''を比較できると仮定しています。いくつかの型 'T'のためにそれを可能にする方法や、' char'リテラルを使わないようにその行を一般化する方法についての質問ですか? – aschepler
@aschepler:タイプTとキャラクターを比較できるようにしたいのですが、私がこのプログラムを実行するときのある点から、私はその比較を行う必要があります。 – starcorn