Exemple:Faire un paramètre de modèle un ami?
template<class T>
class Base {
public:
Base();
friend class T;
};
Maintenant, cela ne fonctionne pas ... Est-il possible de le faire?
Je suis en fait d'essayer de faire un scellant de classe générale comme celui-ci:
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : private virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
J'ai trouvé cet exemple sur ce site quelque part, mais je ne peux pas le trouver ... (here)
Je sais qu'il y a other ways de faire ceci mais juste maintenant je suis curieux si vous pouvez réellement faire quelque chose comme ceci.
... encore une fois, C++ 11 permet le mot-clé "final", par exemple: class X final {...} (ou vous pouvez rendre les fonctions virtuelles individuelles définitives). Dans tous les cas, j'ai essayé le code ci-dessus ("friend T;") avec g ++ 4.8.4 _without_ le drapeau -std = C++ 11 et il compile bien. –