したがって、オブジェクトファンクタを使用して、マザークラスの配列を子からソートする必要があります。母クラスは汎用クラスです。C++でカスタムファンクタを使って配列をソートする
template<typename T>
class MotherClass
{
public:
/* some code */
std::list<T*> getList();
private:
std::list<T*> list_;
}
子クラスはテンプレートここ
class OtherClass
{
public:
/* some code */
std::string getName() const;
private:
std::string name_;
}
として別のクラスを使用しています数子クラスは
class Functor
{
public:
/* some code */
bool operator() (OtherClass* a, OtherClass* b) const
{
return a->getName() < b->getName();
}
}
最後に、ここでは子クラスがある
class ChildClass : public MotherClass<OtherClass>
{
public:
/* some code */
friend std::ostream& operator<<(std::ostream& o, const ChildClass& child);
}
std::ostream& operator<<(std::ostream& o, const ChildClass& child)
{
Functor functor;
std::sort(child.getList().begin(), child.getList().end(), functor);
/* some code */
}
とき、私ですソートラインをコメントするChildClassは、問題なくビルドできます。しかし、そこにいるときは、このエラーが発生します。
エラーC2784: '不明な型のstd ::演算子 - (STD :: move_iterator < _RanIt> &、constのはstd :: move_iterator < _RanIt2> &)':「STDのためのテンプレート引数を推定できなかった:: std :: _ List_unchecked_iterator >>誰が助けることができる '
」から' move_iterator < _RanIt> &?
[mcve]を入力してください。私はあなたのコードを理解していません。例えば'operator'では'child'リストをソートしますが、' child'パラメータは 'const'です – user463035818
' child.getList() 'は値を返します。したがって' child.getList()。begin() 'と' child.getList()。end() 'は2つの異なるコンテナのイテレータです – user463035818
最初のエラーメッセージまたは最後のエラーメッセージを提供していますか?最初の方が重要です。 – aschepler