如何允许使用私有成员指针作为模板参数?

时间:2015-12-22 16:04:02

标签: c++ c++11 friend g++4.8 member-pointers

我有一个类(在下面的例子中为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给出的问题?

0 个答案:

没有答案