C++:返回子类指针

标签 c++ pointers polymorphism

假设我有一个抽象基类 A,并从中派生出 B。

使用以下代码:

A* myInst = (A*) new B;

A* GetA() { return myInst; }
B* GetB() { return (B*) myInst; }

第一个函数编译,第二个不编译。错误:错误 C2143:语法错误:缺少“;”在“*”之前

  • 为什么我不能返回指向 A 的子类的指针?

如果我用 return NULL;!

替换函数的内容,也会发生错误

最佳答案

问题很可能是编译器不知道AB 是什么。最有可能缺少包含。

但除此之外,永远不要将 C 风格的类型转换与类一起使用。甚至更好。

使用static_cast(如果您确定转换正常)或dynamic_cast(如果您需要检查)。

关于C++:返回子类指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257760/

相关文章:

基于整数大小的指针类型转换 (C99)

C# 将泛型类型向上转型为接口(interface)

c++ - 并行算法产生一个集合的所有可能序列

c++ - 我可以使用 applicationDirPath() 访问更高目录级别的资源吗?

c - 指针已释放但未分配

c++ - 堆栈上的多态对象?

c++ - 多态设计,模板作为抽象类

c++ - 如何以编程方式更改布局中小部件的顺序?

c++ - 游戏连续输入检查

c - 如何在 C 中定义指向函数的指针并将该指针分配给函数?