int main(int argc,char* argv[])
{
Crepe c;
//cout<< c;//ligne a problème
}
Tout le code compile très bien si la ligne a problème est commenté
Mais si cette ligne est décomenté, elle donne les erreurs suivantes:
deco.h: In function ‘std::ostream& operator<<(std::ostream&, const T&)
[with T = Crepe]’:
deco.cpp:16: instantiated from here
deco.h:54: error: ambiguous overload for ‘operator<<’ in ‘flux <<
#‘obj_type_ref’ not supported by dump_expr#<expression error>()’
deco.h:51: note: candidates are: std::ostream& operator<<(std::ostream&,
const T&) [with T = std::string]
/usr/include/c++/4.2/bits/basic_string.h:2400: note:
std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const
std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits
= std::char_traits<char>, _Alloc = std::allocator<char>]
Je pense que cela vient de la facon d'appeler << mais je n'ai _aucune
idée_ pour le résoudre.
Merci beaucoup.
permettaient le même résultat sans multiplication des classes.
class Decorateur : public Composant { public: virtual int GetPrix(){return (m_compo.GetPrix()+m_prix);} virtual std::string GetName(){return (m_compo.GetName()+" "+m_name);} protected: Composant& m_compo; Decorateur(Composant& compo); };
même remarque: les attributs hérités ne sont pas définis à ce niveau, l'héritage (Sucre et Nutella) seront nécessaires, non comme une spécialisation utile mais comme le seul moyen de définir le substrat de la recette.
permettaient le même résultat sans multiplication des classes.
class Decorateur : public Composant {
public:
virtual int GetPrix(){return (m_compo.GetPrix()+m_prix);}
virtual std::string GetName(){return (m_compo.GetName()+" "+m_name);}
protected:
Composant& m_compo;
Decorateur(Composant& compo);
};
même remarque: les attributs hérités ne sont pas définis à ce niveau,
l'héritage (Sucre et Nutella) seront nécessaires, non comme une
spécialisation utile mais comme le seul moyen de définir le substrat de
la recette.
permettaient le même résultat sans multiplication des classes.
class Decorateur : public Composant { public: virtual int GetPrix(){return (m_compo.GetPrix()+m_prix);} virtual std::string GetName(){return (m_compo.GetName()+" "+m_name);} protected: Composant& m_compo; Decorateur(Composant& compo); };
même remarque: les attributs hérités ne sont pas définis à ce niveau, l'héritage (Sucre et Nutella) seront nécessaires, non comme une spécialisation utile mais comme le seul moyen de définir le substrat de la recette.