Proteger o ponteiro da classe C++

No momento de desenvolver a arquitetura do projeto, você identifica a necessidade de proteger o acesso ao ponteiro da classe, para isso você deve fazer a sobrecarga do operador&, conforme o exemplo abaixo:

struct useless_type { };

class nonaddressable {
    useless_type operator&() const;
    static void* operator new(std::size_t sz, bool b) {
         return nullptr;
    }
    static void* operator new(std::size_t sz) {
         return nullptr;
    }
};

int main() {
     nonaddressable obj; // -- ok --
     nonaddressable* ptr = &obj; /* erro de compilação */
     nonaddressable* ptr2 = new nonaddressable(); /* retorna null */
     return 0;
}

 

No exemplo acima, quando o desenvolver tentar acessar o ponteiro da classe dará um erro de compilação.

Tem alguma dúvida ou sugestão? Deixe seu comentário!

Deixe um comentário