专注学习的我 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”: 重定义

    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突