名称空间中C ++中的变量声明

问题描述 投票:0回答:1

在库中,我正在使用某些变量声明如下:

char &ns::x = y;

但是,如果我这样做,则会收到以下错误:error: no member named 'x' in namespace 'ns'

如果我重写它,它将起作用:

namespace ns {
    char &x = y;
}

到底有什么区别?为何在图书馆内工作?

c++ variables syntax
1个回答
0
投票

第一个声明

char &ns::x = y;

假定名称x已在名称空间ns中声明。但是这个假设是错误的。

在此代码段中

namespace ns {
    char &x = y;
}

定义了由对象y初始化的引用。


0
投票

如果您是对的,并且库中的代码与编写的代码完全相同,则表明该库中的其他位置,您会找到以下声明:

namespace ns {
    extern char& x;
}

换句话说,x必须已经在ns已声明(并且未定义!)。

© www.soinside.com 2019 - 2024. All rights reserved.