我认为这是可能的,但是编译器抱怨它不能访问我的类的受保护/私有成员。我试过移动东西和改变签名,但找不到一个有效的组合。
我有:
class MyClass
{
public:
friend int main(int argc, char** argv);
private:
void test()
{
cout << "My friend has accessed my member" << endl;
}
};
int main(int argc, char** argv)
{
MyClass mc;
mc.test();
}
你的答案是正确的。
您可能不应该做这里要做的事情——肯定有更好的方法。话虽如此,您可以尝试在全局命名空间friend int ::main
中声明友元函数(注意使用了范围解析运算符::
)。