【发布时间】:2011-07-12 10:41:31
【问题描述】:
我想知道是否可以将 2 个成员函数与“void*,但这也不起作用。
template <class Receiver, class Sender>
class CallBack2 : public ICallBack2 {
protected:
Receiver* receiver;
void(Receiver::*function)(Sender*);
Sender* sender;
public:
CallBack2(Receiver* _receiver, void(Receiver::*_function)(Sender*), Sender* _sender) : receiver(_receiver), function(_function), sender(_sender) {};
virtual ~CallBack2() {};
virtual void callBack() {
(receiver->*function)(sender);
}
virtual bool operator<(const ICallBack2* _other) const {
CallBack2<Receiver, Sender>* other = (CallBack2<Receiver, Sender>*)_other;
if (receiver < other->receiver) {
return true;
} else if (receiver == other->receiver && function < other->function) {
return true; // this line gives the error
}
return false;
}
};
有什么想法吗?
【问题讨论】:
-
你为什么要这样做?
-
function1 < function2是什么意思? -
我需要一个恒定的比较结果才能将它们放入 std::set 或 std::map
-
@Bill Kotsias 然后实现一个返回结果的函数。您可以使用该函数或更改此函数的签名。
-
@Bill Kostias,您应该编辑您的问题以反映您实际尝试做的事情。您想将成员函数放入 std::set 或 std::map。如图所示,您尝试使用
operator<,但它不起作用。
标签: c++ function operator-overloading compare