我正在尝试以下几点:
#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’。请解释为什么会发生此错误?
发布于 2014-06-02 07:14:44
请解释为什么会发生此错误?
该语言根本不允许您在函数中定义命名空间范围变量。定义必须在namespace A中
namespace A {
int j = 5;
}或在周围(全局)命名空间中:
int A::j = 5;当然,您可以为函数中的变量赋值:
int main() {
A::j = 5;
// ...
}但是你也需要一个定义,因为你的程序没有定义。
发布于 2014-06-02 07:23:36
#include <iostream>
namespace A
{
int j;
}
int main()
{
A::j=5;
std::cout << A::j;
return 0;
}由于您在命名空间A中将j声明为全局区域中的extern,因此还需要它的定义。但总的来说,您尝试分配给它,这也需要在链接时的符号定义。因此,您可以删除名称空间A中的extern,并在赋值时删除'int‘关键字。
https://stackoverflow.com/questions/23989033
复制相似问题