无效使用限定名称

时间:2014-06-02 07:10:01

标签: c++ qualified-name

我正在尝试以下方法:

#include <iostream>

namespace A
{
    extern int j;
}

int main()
{
    int A::j=5;
    std::cout << A::j;
}

但我error: invalid use of qualified-name ‘A::j’。请解释发生此错误的原因?

2 个答案:

答案 0 :(得分:4)

  

请解释发生此错误的原因?

该语言根本不允许您在函数内定义命名空间范围变量。定义必须在namespace A

namespace A {
    int j = 5;
}

或在周围(全局)名称空间中:

int A::j = 5;

当然,您可以为函数内的变量赋值:

int main() {
    A::j = 5;
    // ...
}

但是你也需要在某处定义,因为你的程序没有。

答案 1 :(得分:2)

#include <iostream>

namespace A
{
    int j;
}

int main()
{
    A::j=5;
    std::cout << A::j;
    return 0;
}

由于您在全局区域中将命名空间A中的j声明为extern,因此您还需要其定义。但在main中,您尝试分配给它,链接时也需要符号定义。因此,您可以删除命名空间A中的extern,并删除&#39; int&#39;分配时的关键字。