gpt4 book ai didi

c++ - 不能将一个类的方法定义为另一个类的友元

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

我正在尝试使 MainScheduler 的方法 addJob 成为 Job 类的友元函数,如下所示:

#include "MainScheduler.h"
//forward declaration
class MainScheduler;

class Job:
{
friend void MainScheduler::addJob( Job* const job );
...
}

但是我一直报错

error C2027: use of undefined type 'MainScheduler'

您知道我为什么会收到这条消息吗?我该如何解决?

最佳答案

您只能命名已经声明的成员函数,即使是友元声明。这意味着类必须被定义,而不仅仅是前向声明。

错误:

class X;

class Y
{
friend void X::f(); // ERROR
};

右:

class X
{
public:
void f();
};

class Y
{
friend void X::f();
};

为什么您的 #include "MainScheduler.h" 没有使 class MainScheduler 的定义可见,这并不明显,所以那里发生了其他奇怪的事情。

这条规则意味着不可能像 A::f()BB::g()A 的 friend ,所以有时你只需要满足于与整个类(class)成为 friend 。 (或者有一些奇特的方法可以使用帮助类来请求/授予对某些函数集的权限,但这在您需要可扩展的库接口(interface)时更有用。)

关于c++ - 不能将一个类的方法定义为另一个类的友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864156/

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