【发布时间】:2017-12-16 01:52:55
【问题描述】:
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型的类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受指向 B 类型的类的指针。 当函数调用另一个函数时,我提供 reinterpret_cast(a) 作为参数。如果这看起来模棱两可,这里有一个代码示例:
void abc(A * a) {
if (a->IsA("B")) { //please dont worry much about this line,
//my real concern is the reinterpret_cast
def(reinterpret_cast<B *>(a));
};
};
既然你知道我如何调用“def”,我想知道 reinterpret_cast 是否真的返回一个 B 类型的指针作为 def 的参数发送出去。 我将不胜感激任何帮助。 谢谢
【问题讨论】:
-
你会得到一个
B*,但这仍然是一件非常糟糕的事情。它很可能不是您期望的指针。相反,你应该做一个static_cast -
我会改成static_cast,谢谢。
-
或者将测试和演员组合成一个dynamic_cast
-
谢谢,这也是个好主意。
标签: c++ reinterpret-cast