[英]Access to private member functions of derived class using reference to a base class
[英]Declaring one derived class a friend to access private member of base class
我具有以下继承结构:
template<unsigned int t>
class Base {
protected:
int a;
};
template<unsigned int t>
class Derived1 : public Base {
};
template<unsigned int t>
class Derived2 : public Base {
};
我想要的是让Derived1构造函数将Derived2对象作为参数,然后访问基类中的受保护成员'a'。
我将以下行添加到基类:
template<unsigned int u> friend class Derived2;
这样看起来如下:
template<unsigned int t>
class Base {
protected:
int a;
template<unsigned int u> friend class Derived2;
};
编译它时,出现错误C2248:“无法访问在Base类中声明的受保护成员”
如果要从Derived1构造函数访问受保护的成员,则需要成为Derived1而不是Derived2的朋友。
template<unsigned int t>
class Base {
protected:
int a;
template<unsigned int u> friend class Derived1; // here
};
template <unsigned int>
class Derived2;
template<unsigned int t>
class Derived1 : public Base<t> {
public:
Derived1(Derived2<t>& d2) {
cout << d2.a << endl;
}
};
template<unsigned int t>
class Derived2 : public Base<t> {
};
int main() {
Derived2<1> d2;
Derived1<1> d1(d2);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.