定义类外的函数时出错

XZ6*_*Z6H 1 c++ visual-c++

我正在尝试定义一个返回指向结构的指针的函数

#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;
}
Run Code Online (Sandbox Code Playgroud)

编译此程序时,将显示"标识符n未定义"错误.当在类中定义相同的函数abc时,为什么程序编译成功?

Whi*_*TiM 5

n是一个嵌套类.你需要用它来限定它abc::n.

注:一类的名称和范围也是namespace,因为n嵌套在abc,abc现在喜欢namespacen.

完整示例:

#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;
}
Run Code Online (Sandbox Code Playgroud)