派生类的朋友可以访问哪些变量
Friend of a derived class can access what variables?
为了简化我的问题,我有类似的问题:
class Base {
private:
protected:
int a,b;
string c;
public:
[some functions here]
}
class Derived : public Base{
[some variables and functions]
friend void function();
}
void function(){
int d[a][b];
[stuff]
}
基本上,我的空白功能需要访问基类保护类中的东西。我想将这些变量保留在受保护部分中的定义。无论如何,是否有要与派生类交友的函数,才能访问A和B?
您可以在Derived
中定义私有方法:派生中的任何方法都可以访问基本的受保护成员。
函数是派生的朋友,因此它可以在派生中调用那些私人方法,从而访问基本的受保护成员。
编辑以回复下面的评论
get_a()
成员方法和a
成员数据是其类的成员。这些成员的实例存在于其课程的实例中。除了在一个实例中,它们不存在,因此要访问它们,您需要通过类的实例访问它们。
例如,类似的东西:
class Derived : public Base{
[some variables and functions]
friend void function(Derived& derived);
};
void function(Derived& derived)
{
int a = derived.get_a();
int b = derived.get_b();
// I don't know but even the following might work
int c = derived.a; // able to access field of friend's base class.
}
void test()
{
Derived* derived = new Derived();
function(*derived);
delete derived;
}
您的函数需要通过得出的类的实例访问A和B,如下所示
void function()
{
Derived objectDerived;
int d[objectDerived.a][objectDerived.b];
[stuff]
}
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 通过按地址访问变量
- 通过 get-Method 访问变量在类外不起作用
- 是否可以使用指针访问变量以避免直接编辑变量?
- 我无法访问变量的值,即使我通过范围传递了它
- 简单的问题 - 如何从单独的"结构"内的'class'访问变量?
- (C++) 从另一个类访问变量时值无效
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 是否可以从字符串访问变量?
- 变量 z 无法从其他函数访问变量 x
- 如何在 C++ 中从 void 返回函数访问变量
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在C 中本地声明隐藏的封闭范围(而非全局)中访问变量
- 从函数中删除动态内存分配,但无法访问变量
- 如何从派生类中的基类访问变量的值?
- 如何通过指针更快地访问变量,然后直接访问变量?
- 如何在公共类 c++ 中访问变量的值
- 从 Visual Studio 中的多个源文件访问变量
- 使用命名空间和模板类访问变量
- 从子对话框访问变量