【发布时间】:2013-01-03 15:53:24
【问题描述】:
class subscriber
{
public:
virtual void update() = 0;
}
class entity : public subsriber
{
public:
virtual void update() = 0;
}
class myObject : public entity
{
public:
virtual void update()
{
do_things();
}
}
subscriber * ptr = new myObject; //will use shared_ptr, but here i want simplicity
ptr->update();
问题是,会调用正确的更新函数(myObject 中实现的那个)吗?一个“家族”中有两个同名的纯虚函数是否有效?
【问题讨论】:
-
您究竟为什么要这样做?当然,只有一种抽象方法可以解决问题。
-
@Antonie Blom 我有发布/订阅模式,每个实体都是订阅者。有 2 个函数,因为从存储已发布消息(如果有任何新消息)的对象调用更新(使用订阅者 *)和从实体管理器调用更新(使用实体 *)。
-
用编译器检查行为时发生了什么?在你的编译器上检查这个行为应该很容易,不是吗?
-
@Alok Save 我现在无法访问编译器,我在嵌入式设备上。我现在只是在设计并检查它是否有效。
-
@user1873947: Now you do
标签: c++ class inheritance virtual abstract