私は静的ポリモーフィズムを実装しています:
template<typename T>
class Base {
public:
void method() {
// do something
impl();
// do something else
}
void impl() { // intended to be private
static_cast<T*>(this)->impl();
}
};
class Derived : public Base<Derived> {
public:
void impl() { // intended to be private
}
};
このコードは、void impl() が virtual および private である動的ポリモーフィック クラスの静的実装です。
ポリモーフィズム(静的)を達成しました。しかし、Base クラスからアクセスできるようにするために、メソッド void impl() を public にする必要がありました。メソッド void impl() を再びプライベートにしたい。それはできますか?
更新: 書きたくない
friend class Base<Derived>;
Derived クラスでは、Derived のすべてのメンバーへの Base アクセスが許可されるためです。