4
4

2 回答 2

4

请解释为什么会出现这个错误?

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

namespace A {
    int j = 5;
}

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

int A::j = 5;

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

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

但是您还需要在某个地方进行定义,因为您的程序没有定义。

于 2014-06-02T07:14:44.710 回答
2
#include <iostream>

namespace A
{
    int j;
}

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

由于您将命名空间 A 中的 j 声明为全局区域中的 extern,因此您还需要它的定义。但主要是,您尝试分配给它,链接时也需要符号定义。所以可以去掉命名空间A中的extern,赋值时去掉'int'关键字。

于 2014-06-02T07:23:36.447 回答