我在玩C++中模板参数的继承。我有一个儿童班和一个家长班。Parent类试图将自己强制转换为Child类。虽然这确实可以编译并且看起来可以工作,但我想知道这样做是否安全
class Empty { };
template<class T> class Child : public T
{
public:
void do_something() { /* ... */ }
};
class Parent
{
public:
void go_crazy()
{
Child<Empty> & self_as_child = *((Child<Empty> *)this);
self_as_child.do_something();
}
}
void main()
{
Child<Parent> c;
c.go_crazy();
}
那么,自我铸造不可靠吗?它看起来是有效的,但也许这只是因为我很幸运有了特定的编译器。
否,Child<Empty>
和Parent
是不相关、不兼容的类型。如果它起作用,你确实只是运气好。
好消息是,你真的不需要做那个演员。应该有非常简单的方法来完成你想要做的任何事情。