我正在尝试让我的派生类调用myC和myB版本的print()方法。我将从myA类型的指标对象调用这些方法。我如何在C ++中执行此操作?
#include <iostream>
using namespace std;
class myC
{
public:
myC() { }
void print()
{
cout<<"Class C print."<<endl;
}
};
class myB: myC
{
public:
myB() { }
void print()
{
cout<<"Class B print."<<endl;
}
};
class myA: myB
{
public:
myA() { }
void print()
{
cout<<"Class A print."<<endl;
}
};
int main()
{
myA indicator();
indicator.print();
return 0;
}
答案 0 :(得分:2)
首先,您需要继承使用某些访问说明符,例如public
protected
private
将您的继承更改为
class myB:public myC
{
....
}
class myA:public myB
{
....
}
现在main
使用他们的班级名称
int main()
{
myA indicator;
indicator.print();
indicator.myB::print(); //Note that indicator is object of only
indicator.myC::print(); //class myA but access myB,myC's print
return 0;
}
注意如果您使用public
访问说明符继承,则可以调用这些函数,因为继承使用public
意味着您可以访问类外的这些函数,因此可以在main
或课堂外的任何地方调用这些函数。
protected
请参考Kerek回答。
输出
Class A print.
Class B print.
Class C print.
答案 1 :(得分:0)
像这样:
void myA::print()
{
cout<<"Class A print."<<endl;
myB::print();
myC::print();
}
这要求可以从派生类访问基类,即必须将它们作为受保护或公共派生。