我试图定义一个返回指向结构的指针的函数
#include <iostream>
using namespace std;
class abc
{
private:
struct n
{
int data;
};
public:
n* print();
};
n* abc::print()
{
n* q = new n;
q->data = 7;
return q;
}
编译此程序时#34;标识符n未定义&#34;显示错误。当在类中定义相同的函数abc时,为什么程序编译成功?
答案 0 :(得分:5)
n
是一个嵌套类。您需要使用abc::n
进行限定。
注意:类的名称和范围也是namespace
,因为n
嵌套在abc
中, abc
现在喜欢 namespace
n
。
完整示例:
#include <iostream>
using namespace std;
class abc
{
private:
struct n
{
int data;
};
public:
n* print();
};
abc::n* abc::print()
{
abc::n* q = new abc::n;
q->data = 7;
return q;
}
答案 1 :(得分:1)
因为返回的n在类外定义时具有不同的范围。您可以通过在前面添加正确的范围来解决此问题:
abc::n* abc::print()
{
n* q = new node;
q->data = 7;
return q;
}
答案 2 :(得分:1)
课外没有n
符号,因此您需要完全符合abc::n
的要求。