我对 C++ 中的指针向上转换有疑问。
我要写一个我的问题的例子:
class A {}
class B : public A {}
A* pA = new A();
B* pB = new B();
pA = pB; //fails
pA = dynamic_cast<A*>(pB); //fails
我不知道我错过了什么。我想我完全不明白上扬。请问有什么帮助吗?谢谢
更新错误:
[exec] ..\asdf\qwerty.cpp(123) : error C2681: 'B*' : invalid expression type for dynamic_cast
我发现它是如何工作的,如下所示:
pA* = (pA*)pB;
但我不明白为什么。
编辑:我的编辑告诉我:“B* 类型的值不能分配给 A* 类型的实体”。这是什么意思?
更准确地说,pB 是由函数返回的。不知道有没有关系:是这样的:
class C {
B* pB;
B* getB() { return pB; }
}
A* pA;
pA = c.getB(); //this crashes. c was declared before... it is just an example