Es ist mein Code:Fehler Erbe kein Zugriff auf ein Verfahren C++
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’
Thinks wissen: Fenetre ist Kind der Klasse Rectangle. Rechteck hat die Methode
get_air();
Fenetre ist Kind der Klasse Ouverture zu.
Es ist mein .h für Klasse Rechteck, Ouverture und 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
Definition von Ouverture und Fenetre:
Ouverture *tab_Ouverture;
tab_Ouverture = new Ouverture[5];
Fenetre *fen;
fen = new Fenetre(h, l);
Wenn ii verstehen, Fenetre keinen Zugriff auf get_air haben () Methode Ursache Fenetre wird zu einem Ouverture Objet zurückverwandelt, und mein Ouverture-Objekt ist kein Kind von Rectangle? Wie kann ich dieses Problem lösen, ohne eine Vererbung zwischen Rectangle und Ouverture zu machen?
Thks !!!
Bitte bearbeiten Sie Ihren Beitrag mit den Deklarationen von 'Rectangle, Fenetre' und' Ouverture'. –
Bitte geben Sie eine [mcve] an. – Barry
Gibt es einen besonderen Grund, dass Sie diese Fenetre-Objekte als Ouverture-Objekte speichern? Wenn Sie nur eine Rechteckfunktion verwenden, warum werden sie nicht als Rechtecke gespeichert? Aber wenn Sie Methoden beider Klassen verwenden würden, warum sind sie dann nicht immer Fenetre-Objekte? –