假设我有一个抽象基类 A,并从中派生出 B。
使用以下代码:
A* myInst = (A*) new B;
A* GetA() { return myInst; }
B* GetB() { return (B*) myInst; }
第一个函数编译,第二个不编译。错误:错误 C2143:语法错误:缺少“;”在“*”之前
- 为什么我不能返回指向 A 的子类的指针?
如果我用 return NULL;
!
最佳答案
问题很可能是编译器不知道A
或B
是什么。最有可能缺少包含。
但除此之外,永远不要将 C 风格的类型转换与类一起使用。甚至更好。
使用static_cast
(如果您确定转换正常)或dynamic_cast
(如果您需要检查)。
关于C++:返回子类指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257760/