【发布时间】:2011-02-02 09:22:29
【问题描述】:
我有一个实现以下功能的基类:
struct Consumer
{
template <typename T>
void callback(T msg) { /*null implementation */ }
};
然后我有一个类实现这个:
struct Client : public Consumer
{
void callback(Msg1 msg);
void callback(Msg2 msg);
void callback(Msg3 msg);
};
问题是我有一个被视为 Consumer* 的 Client 对象容器,我想不出一种方法来让这些 Consumer 对象调用派生函数。我的预期功能是让多个客户端为每个 Msg 类实现一个重载函数,这对他们来说意味着什么,其余的调用只是调用基类中的 null 实现
有什么想法可以让派生类被调用吗?现在我需要在 Consumer 中实现每个重载的函数并将它们标记为虚拟。
干杯, 格雷姆
【问题讨论】:
-
这就是虚函数的用途
-
虚拟函数不是我关心的;它对每个可能的 Msg 类都进行了重载。
-
你也可以让 msg 多态化——并摆脱模板吗?你有多少个味精课程?
-
@aaa - 你的意思是给所有 Msg 类一个共同的基类吗?
标签: c++ templates virtual overloading