gpt4 book ai didi

c++ - 在 C++ 中丢弃模板参数是否安全?

转载 作者:行者123 更新时间:2023-11-27 23:26:37 24 4
gpt4 key购买 nike

我正在研究 C++ 中模板参数的继承。我有一个 Child 类和一个 Parent 类。 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是不相关的、不兼容的类型。如果它有效,你确实很幸运。

好消息是您真的不需要进行那种转换。应该有非常简单的方法来完成您想要做的任何事情。

关于c++ - 在 C++ 中丢弃模板参数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8902140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com