我有一个类(在下面的例子中为User
)派生自基类(Base
),传递第三类类型(Used
)和一个成员指针class作为基类的模板参数。
我需要在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> {
};
(Not) working example on Ideone
编辑:鉴于这似乎适用于较新版本的GCC,如何解决g ++ 4.8.4给出的问题?