Passage d'un pointeur en parametre
Voila, j'ai une classe du type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class Widget
{
public:
Widget() : s_(0) {}
~Widget() { delete s_; s_ = 0; }
void execute()
{
s_.apply();
}
void setStrategy(Strategy* s)
{
if (s_ != 0)
delete s_;
s_ = s;
}
private:
Strategy* s_;
} |
Voila, rien d'extraordinaire jusque la , mais supposons, qu'au lieu de faire :
Code:
widget.setStrategy(new Strategy)
Je fasse :
Code:
widget.setStrategy(&Strategy())
Dans ce derner cas, la classe Widget appelera un delete sur un objet alloue sur la pile ....
Donc, je voulais savoir comment s'en sortir dans ce cas ?
Je sais qu'on pourrait surcharger et encapsuler en private ::operator new pour eviter de faire un new Strategy et supprimer le delete dans la classe Widget, mais existe - t - il d'autres moyens ?