在C++中丢弃模板参数安全吗

  • 本文关键字:参数 安全 C++ c++
  • 更新时间 :
  • 英文 :


我在玩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是不相关、不兼容的类型。如果它起作用,你确实只是运气好。

好消息是,你真的不需要做那个演员。应该有非常简单的方法来完成你想要做的任何事情。

相关内容

  • 没有找到相关文章