2013-10-06 51 views

回答

0

這可能會幫助:

template <class T, class Comparator = std::less<T>> 
class MyClass 
{ 
    bool compare(const T& lhs, const T& rhs) const { return Comparator()(lhs, rhs); } 
    // stuff 
}; 

class A 
{ 
public: 
    bool operator < (const A& rhs) const; 
}; 

MyClass<A> myClass; 
0
template <class T, class Comparator = std::less<T>> 
class MyClass 
{ 
    //... 
} 

在成員函數,是這樣的: -

void MyClass::Myfun(X x, Comparator mycomp = Comparator()) 
{ 

    if (mycomp(data1,data2)) 
    //... 

} 
+0

不,我想創建一個需要** this **作爲模板參數的類 – user2798694

+0

@ user2798694查看更新的答案 – P0W

0

STL容器實際存儲比較的一個實例,所以你想要的是更接近對此:

template <class T, class Comparator = std::less<T>> 
class MyClass : private Comparator 
{ 
public: 
    MyClass() {} 
    MyClass(const Comparator& compare) : Comparator(compare) {} 

    bool compare(const T& lhs, const T& rhs) const 
    { 
     return static_cast<Comparator>(*this)(lhs, rhs); 
    } 

    // stuff 
}; 

class A 
{ 
public: 
    bool operator < (const A& rhs) const; 
}; 

MyClass<A> myClass; 

不是e如果Comparator不包含任何狀態,則應使用私有繼承來允許空基優化以消除開銷。