【发布时间】:2015-04-18 02:59:27
【问题描述】:
我有这门课:
template <class T>
class list
{
...
bool moreThan(T x, T y);
bool lessThan(T x, T y);
...
};
我需要一个函数指针来更改我的类的行为,并在使用bool moreThan(T, T) 或bool lessThan(T, T) 之间切换。
所以我目前正在使用:
bool (list<int>::*foo)(int x, int y);
foo = &list<int>::lessThan;
并使用它:
(this->*foo)(x, y);
但我想要一个灵活的函数指针,以便我可以将它与我需要的任何T 一起使用,而不仅仅是int。那么有没有办法创建一个指向类模板成员的函数指针呢?比如:
template <class T>
bool (list<T>::*foo)(T x, T y); //this doesn't work
【问题讨论】:
-
你会为此苦苦挣扎,因为
list的每个专业化可能对这些函数有不同的定义,甚至根本没有定义它们!