3

我有一个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> {

};

(不)Ideone 上的工作示例

编辑:鉴于这似乎适用于较新版本的 GCC,我该如何解决给定 g++ 4.8.4 的问题?

4

0 回答 0