我正在为一个框架开发一个大的类层次结构,完成后将需要大量的类型转换。
我的问题是,放入一个使用枚举来存储层次结构中所有对象类型的静态成员是多么愚蠢的想法。让每个类的成员都是静态的不会增加实例化对象的大小,并且会提供一种(可能)比dynamic_cast更快的方法来在运行时确定对象的类型。
至少这是基本的想法。这种方法是否足够,是否有任何潜在的缺陷?
我不知道如何从对象之间共享的静态变量确定每个对象的类型。除非你有一些为每个类重写的虚函数,但你根本不需要静态变量,只需执行以下操作:
struct Base
{
virtual int type() = 0;
};
struct Derived1 : public Base
{
virtual int type() { return 1; }
};
struct Derived2 : public Base
{
virtual int type() { return 2; }
};
不是最快的解决方案,但比dynamic_cast
or typeid
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)