在C++中丢弃模板参数安全吗
Is it safe to cast away template arguments in 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
是不相关、不兼容的类型。如果它起作用,你确实只是运气好。
好消息是,你真的不需要做那个演员。应该有非常简单的方法来完成你想要做的任何事情。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 为表示一个或多个操作的C++函数的int参数寻找类型安全的替换
- 类型安全可变参数函数
- 编译器在 const ref 类型参数上使用临时对象时是否应该警告不安全的行为?
- 提供带有常量参数的函数指针作为带有非常量参数的函数指针是否安全?
- C++:传递像 unique_ptr:get() 这样的参数来函数是否安全?
- 使用安全模式从DLL(通过(INTPTR)参数传递到该函数)获取char **
- C 11-当我将局部变量作为参数传递到线程中时,它是否安全
- 如何要求接口中参数的线程安全
- 为什么我可以通过这样的字符串参数?这种样式安全吗?
- 与构造函数参数相关的异常安全的习语
- 键入安全字符串参数
- 在传递的对象即将被销毁之前,发出将QObject指针作为参数传递的信号是否安全
- Visual Studio 2015 错误 C4996"std::_Copy_impl":使用可能不安全的参数进行函数调用
- 如何干净地创建类型安全的枚举参数
- 使用可变参数模板创建传递新对象的更安全方式是否是个好主意
- 错误 C4996:"std::_Copy_impl":使用可能不安全的参数进行函数调用
- 在C++中丢弃模板参数安全吗
- c++函数参数安全
- 正在使用空weak_ptr作为参数安全调用map::count