相关疑难解决方法(0)

在模板化类中使用STL算法(特别是std :: sort)

我已经将模板类MyContainer声明为贝娄,然后创建了一个类型为DataType1的实例.DataType1类提供了友元函数"DataSpecificComparison",std :: sort使用它来比较DataType1对象.该程序正确编译和排序.

然后我定义了一个名为DataType2的类,给它一个朋友实现"DataSpecificComparison"并用它来创建另一个MyContainer实例.

我现在无法将程序编译为" C2914:'std :: sort':无法推断模板参数,因为函数参数不明确 "报告编译时错误.

开发人员如何指定DataSpecificComparison二进制谓词采用模板类型T*的参数?或者还有另一种解决这个问题的方法吗?

template <class T>
class MyContainer
{
private: 
    vector<T*> m_vMyContainerObjects;
    ....

public:
    ....
    void SortMyContainerObjects()
    {
        std::sort(m_vMyContainerObjects.begin(), m_vMyContainerObjects.end(), DataSpecificComparison)
    }
}


class DataType1
{
    ....
    friend bool DataSpecificComparison(const DataType1 * lhs, const DataType1 * rhs)
}

class DataType2
{
    ....
    friend bool DataSpecificComparison(const DataType2* lhs, const DataType2* rhs)
}
Run Code Online (Sandbox Code Playgroud)

c++ sorting templates stl

2
推荐指数
1
解决办法
3925
查看次数

标签 统计

c++ ×1

sorting ×1

stl ×1

templates ×1