我需要从class stos的方法“pop”中的类信息获取私有数据的访问权限。我知道我可以使用修改嵌套函数的特殊方法,但我认为它不像使用“朋友”那样是elegnat。我想将外部方法作为嵌套类的朋友,但是我得到的信息是“不能重载单独返回类型所忽略的函数”。是否有可能做到这一点?嵌套类C++,如何使外部方法作为嵌套类的朋友
class stos
{
class info
{
int x;
bool isGood;
friend info pop(); // warning: cannot overload functions distungished by return type alone
};
static const int SIZE = 10;
int dane[SIZE];
bool isEmpty;
bool isFull;
int *top;
public:
stos();
info pop();
info push(int x);
};
编辑:
stos::info stos::pop()
{
info objInfo;
if (isEmpty == true)
{
objInfo.isGood = false;
return objInfo;
}
objInfo.isGood = true;
objInfo.x = *top;
top--;
return objInfo;
}
你用什么编译器?该代码在VisualStudio GCC(从4.3到4.9)和最新的Clang ^^中编译得很好。无论如何,你永远不需要好的设计代码中的“朋友”函数 – GameDeveloper
@DarioOO它编译得很好,但不会生成'stos :: pop'朋友,但是没有定义全局函数'pop'。如果你尝试'friend info stos :: pop()',那么你会得到'错误:使用不完整类型'class stos''。 – vsoftco
我知道。用户发布了一个代码,它不会立即重现问题,如果我不知道如何通过显示有问题的代码片段来使用代码,则无法提供更多帮助。 – GameDeveloper