专注学习的我 2018-11-30 09:12 采纳率: 0%
浏览 623

关于C++命名空间的一个问题

#include
using namespace std;

namespace my_space {
int size;
void print();
}
using namespace my_space;
void my_space::print() {
cout << "调用成功" << endl;
}

/*位置1*/

int main()
{
print();
return 0;
}
以上代码是在一个网课中看到的,为什么在使用了using指示后对print()的定义还要加my_space作用域名?如果去掉了my_space::系统会报错

            另外,如果我在此代码的基础上在位置1加上my_space::size=1;也会报错

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2086: “int my_space::size”: 重定义

请问这是什么原因呢?

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-30 11:43
    关注

    因为main没有写在my_space下,它和print不在一个命名空间,所以认不到。
    如果你using了以后又定义,那么就重复定义了,也就是error C2086: “int my_space::size”: 重定义

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?