繁体   English   中英

以隐式方式在不同类型之间进行类型转换

[英]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;

因为CA的导数,并且不是每个A都是C ,所以它不能被隐式转换(就像你可以隐式地将C*转换为A*因为C A具有“不等于或等于 Aie A C ,但仅此而已))。

我怀疑你真的必须在指针类型之间进行隐式转换。 是什么让你觉得你在做什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM