私は単純な構造を作りました:
struct sToken
{
std::string token;
unsigned int lineNb;
};
push_back()
メソッドを使用してこの構造を標準ベクトルに挿入したいのですが、これを行うと:
std::vector<sToken> result;
result.push_back(tkn); //compiler-error
次のエラー メッセージが表示されます。
no match for operator== in __first__gnu_cxx::__normal_iterator<_Iterator,_Container>::operator*<sToken*,std::vector<sToken> >()== in stl_algo.h
しかし、標準の文字列を入れたい場合は、すべて問題ありません。
std::vector<std::string> result;
result.push_back(tkn.token); //OK
コンパイラが について不平を言っているようoperator==
ですが、なぜですか? operator==
構造体をベクトルに入れたいだけなのに、なぜこのような状況で提供する必要があるのですか? また、この演算子を実装する必要がある場合は、実装方法を教えてください。ありがとう。