函数 C::add() 中不允许将'C *'隐式转换为'A *'

Implicit conversion of 'C *' to 'A *' not allowed in function C::add()

本文关键字:转换 add 不允许 函数      更新时间:2023-10-16

在编译以下代码时,我收到了一条错误消息,如"函数C::add((中不允许将'C*'隐式转换为'A*'"。

#include<iostream.h>
#include<conio.h>
class A
{    
public:
int a;
int get()
{
return 10;
}
};
class B:protected A
{
..............................
};
class C: public B
{
public:
void add()
{
cout<<a;
cout<<get();
}
};
void main()
{
C ob;
ob.add();
getch();
}

在代码的第2行添加了"using namespace std"后,我在运行此程序时没有收到任何错误

完整代码

#include<iostream>
#include<stdio.h>
using namespace std;
class A
{    
protected:
int a;
int get()
{
return 10;
}
};
class B:protected A
{
// ..............................
};
class C:public B
{
public:
void add()
{
cout<<a;
cout<<get();
}
};
int main()
{
C ob;
ob.add();
//getch();
}

或者你可以使用

std::cout<<a;
std::cout<<get();