Voici le code:Comment rendre ma classe privée visible pour les conteneurs STD?
#include <map>
class Hidden {
private:
friend class Visible;
Hidden(); { /* nothing */ }
};
class Visible {
public:
void f() {
std::map<int, Hidden> m;
m[1] = Hidden(); // compilation error, class Hidden is private
}
};
Le code ne compile pas parce que le constructeur de la classe Hidden
est privée pour la classe std::map
. Évidemment, je ne veux pas faire de la classe std::map
un ami de Hidden
. Mais que dois-je faire ici? Merci d'avance!
"Que faites-vous * * ici?" est la bonne question. Quel est le but du code? Et il n'y a pas moyen de contourner cela: 'map' doit être capable de construire' Hidden'. – GManNickG