Alias ​​public pour le type non public


12

Je me demande si c'est du C ++ valide:

class Test {
    struct PrivateInner {
        PrivateInner(std::string const &str) {
            std::cout << str << "\n";
        }
    };

public:
    using PublicInner = PrivateInner;
};

//Test::PrivateInner priv("Hello world");        // Ok, private so we can't use that
Test::PublicInner publ("Hello World");           // ?, by using public alias we can access private type, is it ok ?

1
Pourquoi le code ne serait-il pas valide?
NathanOliver

Réponses:


14

Les types ne sont ni publics ni privés. Le contrôle d'accès ne s'applique qu'aux noms . Puisqu'il PublicInners'agit d'un nom public qui fait référence à la PrivateInnerclasse, il peut être utilisé en dehors de la Testclasse.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.