请考虑以下场景:
class A
{
friend void B::Itemfunction();
private:
int number;
int size;
public:
Randomfunction();
}
class B : public A
{
private:
string Random;
public:
void Itemfunction();
void CheckLog();
}
在 A 类型的 Itemfunction 中创建的对象是否可以访问 obj 的私有(private)数据成员?如:
void B::Itemfunction(){
A obj;
//Possible to do...
obj.number = 2;
}
我知道派生类 B 可以访问 A 的所有公共(public)部分,但是如果我只想要一个函数(Itemfunction)来访问私有(private)部分,这是正确的做法吗?我只是想看看我的理解是否正确。
干杯
最佳答案
不,这不可能。您不能为尚未完全声明的类添加类成员函数。
在那种情况下(因为 class B
需要一个完整声明的 class A
才能继承),唯一的方法是转发声明 class B;
和全类同学交 friend :
#include <iostream>
#include <string>
class B;
class A
{
// friend void B::Itemfunction();
friend class B;
private:
int number;
int size;
public:
void Randomfunction();
};
class B : public A
{
private:
std::string Random;
public:
void Itemfunction();
void CheckLog();
};
int main()
{
}
关于c++派生基类Friend函数访问Parent上的private?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36872187/