定义对象类型我有这样的基本设置:C++通过枚举
enum{
BASE,
PRIMITIVE,
...
};
class IUnknown{
public:
bool inline is(int type){return inv_type == type;}
private:
enum {inv_type = BASE};
};
class Primitive: public IUnkown{
private:
enum {inv_type = PRIMITIVE};
};
我的问题是,我会希望能够调用是一个原始的实例,并把它返回true时类型等于在Primitive类中声明的枚举值。
我发现的唯一的解决方法是申报“是”功能为虚拟和在每个子类中的副本,但我不知道是否有可能以某种方式重新定义枚举,并有在IUnkown功能自己采取从那里
我怀疑你没有正确地将多态性应用于你的问题。你不应该以这种情况开始。虚拟绑定将确定每个定义的虚拟方法的对象行为,而不需要通过is()检查对象类型。 – 2012-02-04 17:06:18
我同意罗伯特,似乎你正在尝试手动实现动态多态。 – enobayram 2012-02-04 17:13:43
您可能希望避免使用名称并研究“IUnknown”的实际用法,它是使用中的一大块多态代码的基础。 – ssube 2012-02-04 17:22:46