当我尝试转换为基类时,为什么编译器会抱怨?

Mr.*_*Boy -2 c++ inheritance

BaseClass.h

class BaseClass
{
 ...
};
Run Code Online (Sandbox Code Playgroud)

SubClass.h

#include "BaseClass.h"
class SubClass : public BaseClass
{
 ...
};
Run Code Online (Sandbox Code Playgroud)

MyApp.h

class BaseClass;
class SubClass;
class MyApp
{
 SubClass *pObject;

 BaseClass *getObject()
 {
  return pObject;
 }
};
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:错误C2440:'return':无法从'SubClass*'转换为'BaseClass*'

为什么它不起作用,当然你可以自动转换为基类而不进行任何转换?

Dev*_*lar 5

只发布您测试过的代码以展示所描述的行为.

您的代码,删除了"pOject"拼写错误和"..."部分,编译得很好.

OP完成后重新编写问题:

MyApp.h中的代码不知道SubClass是BaseClass的子类,因为您没有包含标头.所有MyApp.h看到的都是类的前向声明,它允许处理指针但不允许强制转换.