模板 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(){}
};
我的问题是:如何设置 A
、B
和 C
classes 到好友管理器而不考虑 Manager
的模板类型? (例如 Manager
与模板 ABC
、EABC
、DABC
、XYZEFGABC
、...)
让他们成为任何经理的朋友:
class A {
template <typename T>
friend struct Manager;
};
template<class BASE>
class B: public BASE {
template <typename T>
friend struct Manager;
};
// etc.
我正在修改 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(){}
};
我的问题是:如何设置 A
、B
和 C
classes 到好友管理器而不考虑 Manager
的模板类型? (例如 Manager
与模板 ABC
、EABC
、DABC
、XYZEFGABC
、...)
让他们成为任何经理的朋友:
class A {
template <typename T>
friend struct Manager;
};
template<class BASE>
class B: public BASE {
template <typename T>
friend struct Manager;
};
// etc.