有我的代码:
Fenetre *fen;
fen = new Fenetre(h, l);
tab_Ouverture[i]= *fen;
air_facade - tab_Ouverture[i].get_air();
Error: error: ‘class Ouverture’ has no member named ‘get_air’
想知道:
Fenetre是Rectangle类的孩子。矩形法
get_air();
费内特也是班级的孩子。
我的.h类是Rectangle,Ouverture和Fenetre:
#ifndef DEF_RECTANGLE
#define DEF_RECTANGLE
class Rectangle {
protected:
float hauteur;
float largeur;
public:
Rectangle();
Rectangle(float h, float l);
float get_air();
};
#endif
#ifndef DEF_OUVERTURE
#define DEF_OUVERTURE
class Ouverture
{
};
#endif
#include "rectangle.h"
#include "ouverture.h"
#ifndef DEF_FENETRE
#define DEF_FENETRE
class Fenetre:public Rectangle, public Ouverture
{
public:
Fenetre();
Fenetre(float h, float l);
};
#endif
互惠生和Fenetre的定义:
Ouverture *tab_Ouverture;
tab_Ouverture = new Ouverture[5];
Fenetre *fen;
fen = new Fenetre(h, l);
据我了解,Fenetre无法访问get_air()方法,因为Fenetre已重新转换为Ouverture Objet,而我的Ouverture对象不是Rectangle的子级?
我如何才能解决此问题而又不会在Rectangle和Ouverture之间继承?
哎呀!
最佳答案
ouverture没有get_air()方法。
get_air()仅可用于Rectangle和Fenetre类(因为Fenetre也是一个矩形)
将指针投射到Fenetre类,它将起作用。
关于c++ - 错误继承,无法访问方法C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39549047/