class BaseClass
{
...
};
Run Code Online (Sandbox Code Playgroud)
#include "BaseClass.h"
class SubClass : public BaseClass
{
...
};
Run Code Online (Sandbox Code Playgroud)
class BaseClass;
class SubClass;
class MyApp
{
SubClass *pObject;
BaseClass *getObject()
{
return pObject;
}
};
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误:错误C2440:'return':无法从'SubClass*'转换为'BaseClass*'
为什么它不起作用,当然你可以自动转换为基类而不进行任何转换?
只发布您测试过的代码以展示所描述的行为.
您的代码,删除了"pOject"拼写错误和"..."部分,编译得很好.
OP完成后重新编写问题:
MyApp.h中的代码不知道SubClass是BaseClass的子类,因为您没有包含标头.所有MyApp.h看到的都是类的前向声明,它允许处理指针但不允许强制转换.
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |