inherance répartir dans les fichiers
Bonjour a tous,
j'ai trouver là https://www.tutorialspoint.com/cplus...nheritance.htm un exemple qui fonctionne dans un fichier cpp comment faire avec les quatre fichier suivant Rectangle.h Rectangle.cpp Shape.h Shape.cpp ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| /*
* E.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef RECTANGLE_H_
#define RECTANGLE_H_
#include "Shape.h"
class Rectangle: public Shape {
public:
Rectangle();
virtual ~Rectangle();
};
#endif /* RECTANGLE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /*
* E.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Rectangle.h"
#include <iostream>
using namespace std;
// Derived class
class Rectangle: public Shape {
public:
int getArea() {
return (width * height);
}
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/*
* E.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Rectangle.h"
#include <iostream>
using namespace std;
// Derived class
class Rectangle: public Shape {
public:
int getArea() {
return (width * height);
}
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/*
* B.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef SHAPE_H_
#define SHAPE_H_
class Shape {
public:
Shape();
virtual ~Shape();
};
#endif /* SHAPE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include <iostream>
#include "Shape.h"
#include "Rectangle.h"
using namespace std;
int main(void) {
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
// Print the area of the object.
cout << "Total area: " << Rect.getArea() << endl;
return 0;
} |
Merci beaucoup d'avoir répondu !
Bonjour ,
oui, je suis d'accord. tu as le lien qui fonctionne avec cpp unique et je me demande comment les ".h" sont construit. Personnellement c'est ma difficulté de construire les .h a partir des exemple cpp.:mouarf::calim2: dans le livre "c primer" c'est la même chose je bute sur cette question comment déclarer la classe qui va avec le code cpp. Bienvenue a ceux qui montre au moins une fois :D
Merci beaucoup d'avoir répondu !
merci pour ta réponse très complète aurais tu un conseil de lecture :D
j'ai modifié comme suis mais j'obtiens une redéfinition
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /*
* B.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef SHAPE_H_
#define SHAPE_H_
class Shape {
public:
Shape();
virtual ~Shape();
void setWidth(int w);
void setHeight(int h);
};
#endif /* SHAPE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| /*
* B.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Shape.h"
#include <iostream>
using namespace std;
// Base class
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| /*
* E.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef RECTANGLE_H_
#define RECTANGLE_H_
#include "Shape.h"
class Rectangle : public Shape {
public:
Rectangle();
virtual ~Rectangle();
void getArea(int width, int height) const;
};
#endif /* RECTANGLE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| *
* E.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Rectangle.h"
#include <iostream>
using namespace std;
// Derived class
class Rectangle : public Shape {
public:
int getArea(int width, int height) {
return (width * height);
}
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream>
#include "Shape.h"
#include "Rectangle.h"
using namespace std;
int main(void) {
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
// Print the area of the object.
cout << "Total area: " << Rect.getArea() << endl;
return 0;
} |
ce qui me parais normal vue que j'ai deux fois le même code
Code:
class Rectangle : public Shape {
dans le .h et le .cpp mais comment faire alors ?:?
j'ai modifié comme suis mais j'obtiens une toujours une redéfinition
Bonjour
j'ai modifié comme suis mais j'obtiens une toujours une redéfinition
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /*
* B.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef SHAPE_H_
#define SHAPE_H_
class Shape {
public:
Shape();
virtual ~Shape();
void setWidth(int w);
void setHeight(int h);
};
#endif /* SHAPE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
/*
* B.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Shape.h"
#include <iostream>
using namespace std;
// Base class
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width =0;
int height =0;
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/*
* E.h
*
* Created on: 6 mars 2021
* Author: vincent
*/
#ifndef RECTANGLE_H_
#define RECTANGLE_H_
#include "Shape.h"
class Rectangle : public Shape {
public:
Rectangle();
virtual ~Rectangle();
void getArea() const;
};
#endif /* RECTANGLE_H_ */ |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| /*
* E.cpp
*
* Created on: 6 mars 2021
* Author: vincent
*/
#include "Rectangle.h"
#include "Shape.h"
#include <iostream>
using namespace std;
// Derived class
class Rectangle : public Shape{
public:
int getArea() { return (width * height); }
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream>
#include "Shape.h"
#include "Rectangle.h"
using namespace std;
int main(void) {
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
// Print the area of the object.
cout << "Total area: " << Rect.getArea() << endl;
return 0;
} |
merci pour votre aide je pense que c'est le fichier Rectangle.h qui pose problème:ptdr:
vincent
Références et livres d'apprentissage
Bonjour,
S'il est vrai que les livres signalés sont anciens, ils sont surtout critiquables quand on progresse (quand on n'a plus besoin des petites roues sur le vélo). Ce ne sont pas des livres de référence.
Si la demande initiale est bien "des livres en français pour débuter", je pense que le choix sera assez limité.
Zeste de savoir présente un travail intéressant et clair. L'ordonnancement des rubriques est un peu étrange comme d'utiliser des objets avant d'avoir aborder le sujet. Par ailleurs, qui apprend un langage pour ne faire que de l'application console ? Entre autres, l'absence des composants, objets particuliers, semble assez pénalisante. Enfin ce n'est pas un livre, et le pdf n'y change rien.
Le Lippman est un bon livre assez cher qui date de 2013. Il reste lui aussi concentré sur le cœur du langage sans s'intéresser vraiment au développement applicatif. A ma connaissance, il n'existe qu'en anglais ce qui ne correspond pas à la demande.
Je me trompe peut être mais un livre d'initialisation doit présenter une plateforme de développement. Pour reprendre l'exemple à 2 roues, il est difficile d'apprendre à faire du vélo sans vélo. Que ce qui nous a mis en selle ne soit pas apte à nous préparer au tour de France est certain.
La solution Zeste de savoir complétée par un cours sur une plateforme QT ou Visual (voire C++ builder) serait un compromis. Mais je doute qu'un tel cours existe intégralement en français et de qualité (il y en a en anglais bien sûr :oops:). L'usage des FAQ et autres forums ne peuvent suffire car ils nécessitent d'avoir déjà un pied à l'étrier (pédale pour vélo type équidé).
C'est une question simple sans réponse simple.
Salutations
Merci beaucoup d'avoir répondu !
j'ai pris le partie de me procurer le Lippman :) j'appends des tas de choses non vue en français. merci pour vos réponses.
cordialement
Vincent