我有一个User
派生自基类 ( ) 的类(在下面的示例中)Base
,将第三类类型 ( Used
) 和该类中的成员指针作为模板参数传递给基类。
我需要在内部做Used
什么(即我需要交朋友)以使指向的数据成员可以是私有的?
class User;
template <typename T, int T::*member>
class Base {
};
class Used {
// Befriend everything there is.
friend class User;
template <typename T, int T::*member> friend class Base;
// The variable that should be accessible.
int i;
};
// error: ‘int Used::i’ is private
class User : public Base<Used, &Used::i> {
};
编辑:鉴于这似乎适用于较新版本的 GCC,我该如何解决给定 g++ 4.8.4 的问题?