j'ai un certain nombre de classes qui dérivent d'une base virtal pur:Création d'un const share_ptr <pure_virtual_class> membre
class base {
public:
virtual int f() = 0;
};
class derived_0 : public base {
public:
int f() {return 0;}
};
class derived_1 : public base {
public:
int f() {return 1;}
};
Je ne mis deux classes dérivées par souci de concision, mais dans la pratique j'ai plus.
Et je voudrais créer une classe qui a un pointeur de const partagé à la base. Je voudrais faire à ce qui suit, mais je ne peux pas que je dois initialiser le pointeur const dans la liste d'initialisation:
class C{
public:
C(bool type) {
if(type) {
derived_0* xx = new derived_0;
x = shared_ptr<base>(xx);
}
else {
derived_1* xx = new derived1;
x = shared_ptr<base>(xx);
}
}
private:
const share_ptr<base> x;
};
Comment puis-je obtenir cette fonctionnalité?
Vous avez oublié de marquer 'base :: f()' comme 'virtual' – Praetorian
Merci Praetorian. Je l'ai réparé. – user1027953
Je me demande ce que sont exactement les messages d'erreur. –