模板 class 层级友元继承

Template class hierarchy friend inheritance

我正在修改 C++ 并面临以下问题:

给定:

class A {
    int aVar;

public:
    A(){}
    virtual ~A(){};
};

template<class BASE>
class B: public BASE {
    int bVar;

public:
    B() : BASE() {}
    virtual ~B() {}
};

template<class BASE>
class C: public BASE{
    int cVar;

public:
    C() : BASE() {}
    virtual ~C() {}
}

D,E,F,G...

我可以做一种继承参数和函数等的分支 class 层次结构。喜欢typedef C<B<A>> ABC;

但是,我应该 class 以及 "manages" 通过受保护访问这些对象的某些组合。

template<class TYPE>
struct Manager {
    TYPE current;

    Manager() {
        current.aVar++;
        current.bVar++;
        current.cVar++;    
    }
    ~Manager(){}
};

我的问题是:如何设置 ABC classes 到好友管理器而不考虑 Manager的模板类型? (例如 Manager 与模板 ABCEABCDABCXYZEFGABC、...)

让他们成为任何经理的朋友:

class A {
    template <typename T>
    friend struct Manager;
};

template<class BASE>
class B: public BASE {
    template <typename T>
    friend struct Manager;
};

// etc.