nod*_*dwj 0 c++ access-control friend
我正在尝试使MainScheduler的方法addJob成为Job类的友方函数,如下所示:
#include "MainScheduler.h"
//forward declaration
class MainScheduler;
class Job:
{
friend void MainScheduler::addJob( Job* const job );
...
}
Run Code Online (Sandbox Code Playgroud)
但我一直在收到错误
错误C2027:使用未定义类型'MainScheduler'
你知道为什么我收到这条消息,我该如何解决?
您只能命名已声明的成员函数,即使是友情声明也是如此.这意味着必须定义类,而不仅仅是前向声明.
错误:
class X;
class Y
{
friend void X::f(); // ERROR
};
Run Code Online (Sandbox Code Playgroud)
对:
class X
{
public:
void f();
};
class Y
{
friend void X::f();
};
Run Code Online (Sandbox Code Playgroud)
为什么你#include "MainScheduler.h"没有明确class MainScheduler可见的定义并不明显,所以那里还有其他奇怪的东西.
这条规则意味着它是不可能做这样的事情A::f()是朋友B和B::g()是朋友A,所以有时你不得不接受邀请好友一整类.(或者有一些奇特的方法可以使用帮助程序类来请求/授予某些函数集的权限,但是当您需要可扩展的库接口时,这会更有用.)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |