【发布时间】:2012-01-27 00:12:03
【问题描述】:
请看my first attempt at answering this .为了简化事情,我之前忽略了讲述整个故事。原来我的例子有效!对不起。
整个故事是,这是一个库,在一个文件中包含一个类,在另一个文件中包含主类,所有这些都链接到我的库中。该库为流程框架提供了基础,这就是为什么 main 位于库中而不是流程中的原因。
下面是我所拥有的精简版。
pf.hpp
using namespace std;
namespace MyNamespace
{
class ProcessManager
{
public:
friend int main(int argc, char** argv);
private:
void test();
};
};
pf.cpp
#include "pf.h"
namespace MyNamespace
{
ProcessManager::test()
{
cout << "My friend has accessed my member" << endl;
}
};
pfmain.cpp
#include "pf.hpp"
int main(int argc, char** argv)
{
ProcessManager pm;
pm.test();
}
请注意,编译库时会失败
我试过的是:
- 让朋友四处走动
- 使朋友引用主要使用全局范围(例如 ::main)
- 交友和主声明使用全局范围
我错过了什么?
谢谢!
【问题讨论】:
-
这有点跑题了,但是很多人会说
friend关键字从来都不是一个好的解决方案。 -
我同意这并不理想,但有时你别无选择
-
可能要考虑与
main()的其他变体加好友。但不确定他们是否在 Facebook 上。