我的代码如下所示,当我编译它时,我收到此错误:
two.cpp:5:错误:在'=之前的预期构造函数,析构函数或类型转换 '令牌
#include <iostream>
using namespace std;
namespace a1{
int a=3;
a=4;
}
int main(){
cout << a1::a<<endl;
}
我在两个文件中定义了命名空间时遇到了这个问题,在第二个文件中,我无法为第一个文件中定义的变量赋值。
我正在学习开始使用ANSI C ++,但在本书中找不到任何有关此内容的信息。
答案 0 :(得分:5)
您可以在命名空间范围内声明(包括您可以拥有定义的声明),例如
int a = 3;
但是你不能在命名空间范围内拥有非声明语句。
例如,
等作业a = 4;
不是声明:它纯粹要求效果。
但是,您可以将其放在函数体中,例如在main
。
干杯&amp;第h。,
答案 1 :(得分:4)
命名空间的目的是避免名称冲突。所以用命名空间包围你的变量和类声明。但是名称空间本身并不提供运行代码的脚手架。你的a = 4是怎么回事;声明?应该在哪里执行?您需要将其放在函数或方法中,而不是放在命名空间中。
答案 2 :(得分:0)
你的第二个文件是否知道int a的定义; ?命名空间不像其他语言一样神奇地工作,你仍然必须在另一个文件中包含一个包含int a定义的头文件,或者在列表中将它定义为外部。