2013-06-21

Способ реализации "приватного" АПИ

Интересный трюк:
template < typename T > 
class access_key {
private:
    friend T;
    access_key() {}
};

class repairmen;

class elevator {
public:
    void fix( access_key<repairman> );
};

class repairman {
public:
    void fix_elevator( elevator & e ) { 
        e.fix( access_key<repairman>() ); 
    }
}
увидел тут