我正在编写一个供自己使用的反射实用程序,我简化了代码(删除复杂的模板),如下所示:
class A {
private:
friend class Field;
int i;
};
class Field {
public:
Field(int A::* p) : p(p) {}
private:
int A::* p;
};
Field field(&A::i);
编译器抱怨i
is private of class A
。
我现在很困惑,我知道参数的作用域是函数原型作用域,但我不太了解它与 C++ 特性朋友类的关系。
谁能帮助我应该怎么做才能将私有传递&A::i
给field
对象?