以隐式方式在不同类型之间进行类型转换
Types conversion between different types in an implicit manner
我需要从A*到C*的隐式转换;我不能改变A的定义或实现。
class A
{
};
struct B: public A
{
};
struct C: public B
{
};
当我写以下内容时:
A* p;
C* q = p;
我得到一个错误C2440;不能从A*转换为C*。A.两个类都是原始数据的普通结构
唯一的方法就是使用强制类型转换:
// a C++ style static_cast:
C* q = static_cast<C*>(p);
// or the less verbose C-style cast
C* q = (C*)p;
因为C
是A
的衍生物,而不是每个A
都是C
,所以它不能隐式转换(就像你可以隐式地将C*
转换为A*
,因为每个C
都是A
(即A
具有比C
"更少或相等的特征",但不是更多))。
我怀疑你真的必须在指针类型之间使用隐式强制转换。是什么让你觉得你知道?
相关文章:
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 如何声明不同类型的模板化类之间的转换
- 使用模板在size_t和int之间进行隐式类型转换
- NaN 在浮点型和双精度型之间的类型转换
- 显式允许在主类型和用户定义类型之间进行类型转换
- 使用std::filesystem::path在分隔符类型之间进行转换
- 相同类型之间的转换无效
- 在uchar类型的特征::矩阵和cv::Mat之间的转换
- 为什么reinterpret_cast不强制copy_n相同大小类型之间的转换?
- 如何让 VS2013 停止生成对整数类型之间强制转换的__dtol3、__dtoui3和其他函数的调用
- 如何在模板中的类型之间进行转换并转换回原始类型
- 积分类型之间的转换成本
- C++用于在指向相同大小类型的指针之间进行转换
- C++ get 和类型转换之间的用法有什么区别?我应该使用哪一个?
- 在C++中实现相关类型之间的自动类型转换的最佳方法是什么?
- 同类数字类型之间的转换
- C++自定义基本类型之间的转换
- 具有不同const限定符的两个类型之间的转换
- 类型之间的转换
- C和c++之间类型转换的差异