有我的代码:

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/

10-11 00:57