我已经将模板类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)