问问题
1965 次
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 回答