首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限定名的无效使用

限定名的无效使用
EN

Stack Overflow用户
提问于 2014-06-02 07:10:00
回答 2查看 2K关注 0票数 4

我正在尝试以下几点:

代码语言:javascript
复制
#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’。请解释为什么会发生此错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-02 07:14:44

请解释为什么会发生此错误?

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

代码语言:javascript
复制
namespace A {
    int j = 5;
}

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

代码语言:javascript
复制
int A::j = 5;

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

代码语言:javascript
复制
int main() {
    A::j = 5;
    // ...
}

但是你也需要一个定义,因为你的程序没有定义。

票数 4
EN

Stack Overflow用户

发布于 2014-06-02 07:23:36

代码语言:javascript
复制
#include <iostream>

namespace A
{
    int j;
}

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

由于您在命名空间A中将j声明为全局区域中的extern,因此还需要它的定义。但总的来说,您尝试分配给它,这也需要在链接时的符号定义。因此,您可以删除名称空间A中的extern,并在赋值时删除'int‘关键字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23989033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档