我正在尝试以下方法:
#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’
。请解释发生此错误的原因?
答案 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;分配时的关键字。