5

私は静的ポリモーフィズムを実装しています:

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 アクセスが許可されるためです。

4

1 に答える 1