bonjour, je débute en C++ et je ne comprend pas l'erreur (s'il y en a une) suivante:

je crée une classe mère:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#include <iostream>
#include <string> 
 
using namespace std;
 
class oiseau {
      protected:
              string id;
              double nbKm;
              double vit;
      public:
 
             oiseau(string i="aa",double nb=0,double v=1.5);
        void changeId(string s);      
        void affiche(); 
        void vole(int nbSec);
 
 
      };
 
oiseau::oiseau(string i,double nb,double v):id(i),nbKm(nb),vit(v){}
Puis la classe fille:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class migrateur : public oiseau{
      private:
              oiseau oi;
              string pays;
      public:
             migrateur(double nb=1000,string p="france");
        void affiche();
      };
 
 migrateur::migrateur(double nb,string p):pays(p){
                            oi.nbKm=nb;}
et le compilateur me dit:

`double oiseau::nbKm' is protected

c'est vrai, mais les données protégées sont censés être accessible par toutes les classes filles, non?
Comment faire sinon?
(je veut juste créer un constructeur qui prend 2 paramètres servant a initialiser les valeurs nbKm et pays, ayant respectivement les valeurs par défaut 1000 et "france").

merci d'avance!!