gpt4 book ai didi

c++ - 互惠 friend 成员函数 = 循环包含声明

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:55 24 4
gpt4 key购买 nike

我在不同的 h 文件中定义了两个类,每个类都有一些私有(private)函数。但是,我希望能够从另一个类中的函数访问每个类中的一个函数。

例如……

//apple.h:

class Beets;

class Apple
{
public:
double ShadeUsed();
private:
void Fruit();
bool RedRoots();
friend bool Beets::BlueRoots(); //<--- Error b/c not declared yet
};


//beets.h
#include "apple.h"

class Beets
{
public:
double SunNeeded();
private:
void Leaves();
bool BlueRoots();
friend bool Apple::RedRoots();
};

目标是每个类中只有一个函数可以访问其他类的私有(private)内容。例如,只有根函数可以访问其他类的私有(private)内容。但是,如果不包含循环,我就无法实现相互的友元。

例如,我考虑过让整个 Beets 类成为 Apples 的 friend ,这样类预声明就足够了,但我宁愿只允许一个函数私有(private)访问。

有什么建议吗?提前致谢,马特。

(附:为什么“提前致谢”、“Matt”之间的回车不会导致换行?)

最佳答案

您可以使用调用成员函数的友元函数。

//apple.h:

class Beets;

class Apple
{
public:
double ShadeUsed();
private:
void Fruit();
bool RedRoots();
friend bool Beets_BlueRoots(Beets* beets);
friend bool Apple_RedRoots(Apple* apple);
};

bool Apple_RedRoots(Apple* apple);


//beets.h

class Beets
{
public:
double SunNeeded();
private:
void Leaves();
bool BlueRoots();
friend bool Apple_RedRoots();
friend bool Beets_BlueRoots(Beets* beets);
};

bool Beets_BlueRoots(Beets* beets);

关于c++ - 互惠 friend 成员函数 = 循环包含声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com