Initialisation de membres dans un constructeur
Bonjour,
En faisant les exemples d'un tuto de C++ dispo sur ce site, j'ai rencontré un problème que je ne comprends pas. C'est sans doute assez basique, mais le diagnostic de l'erreur m'échappe.
Voici le code:
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 28 29 30 31 32 33 34 35 36
| #include <iostream>
using namespace std;
class Circle {
double radius;
public:
// Circle(double r) { radius=r; }
Circle(double r) : radius(r) {}
// Les 2 écritures ci-dessus sont acceptées indifféremment par le compilo g++
double area() {return radius*radius*3.14159265;}
};
class Cylinder {
Circle base;
double height;
public:
// Par contre lécriture suivante ne marche pas!! ??????
// Cylinder(double r, double h) { base=r; height=h; }
// Alors que l'instruction suivante est correcte:
Cylinder(double r, double h) : base(r), height(h) {}
// Pourquoi ???
double volume() {return base.area() * height;}
};
int main () {
Cylinder foo (10.,20.);
cout << "foo's volume: " << foo.volume() << '\n';
return 0;
} |
J'ai mis quelques commentaires relatifs à la question que je me pose.
Merci pour les réponses