定义类外的函数时出错

时间:2016-02-27 19:32:00

标签: 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;
}

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

3 个答案:

答案 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的要求。