关于命名空间的问题

wtn624 2006-07-12 01:47:00
//-------------------------------
//head.h
#include<string>
namespace data
{
extern const double pi=3.14159265;
extern const std::string days[]={"sunday","monday","wednesday","thursday","friday","saturday"};
}

//-----------------------------------
//main.cpp
#include<iostream>
#include<string>
#include"head.h"
namespace mydata //将mydata 换成data 就对
{
extern const double data::pi ;
extern const std::string data::days[];
}

int main()
{
std::cout<<std::endl
<<"pi has the value :"
<<mydata::pi<<std::endl;
std::cout<<"The second day of the week is :"
<<mydata::days[1]<<std::endl;

return 0;
}

//错误提示:
/*
------ 已启动生成: 项目: 命名空间, 配置: Debug Win32 ------
正在编译...
命名空间.cpp
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(6) : error C2888: “const double data::pi”: 不能在命名空间“mydata”内定义符号
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(7) : error C2888: “const std::string data::days[6]”: 不能在命名空间“mydata”内定义符号
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(14) : error C2039: “pi”: 不是“mydata”的成员
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(14) : error C2065: “pi”: 未声明的标识符
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(16) : error C2039: “days”: 不是“mydata”的成员
c:\documents and settings\tcl\桌面\question\file\命名空间.cpp(16) : error C2065: “days”: 未声明的标识符
生成日志保存在“file://c:\Documents and Settings\tcl\桌面\question\file\Debug\BuildLog.htm”
命名空间 - 6 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
*/

//自己就想在madata 空间引用 data 空间内容,要怎么改?高手们帮帮忙!
...全文
322 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtn624 2006-07-12
  • 打赏
  • 举报
回复
哦,不好意思,是我弄错了.vs2005 是指 visual studio2005 和我说的vc2005 其实他们是集合和子集之间的关系

lyskyly(浮生三笑) 是正确!

我原先是用 vc6.0 编译的文件,现在用 vc2005 再编译肯定会有一些问题



chenhu_doc 2006-07-12
  • 打赏
  • 举报
回复
vc2005 包含在vs2005 内,vs2005 里面还包含其他的工具....

visual studio 2005
jixingzhong 2006-07-12
  • 打赏
  • 举报
回复
顺便问下 vs2005 和 vc2005 有什么联系没?
======================
vc2005 还没有听说这个叫法的 ...

猜猜是同一个东西吧 .....
vs2005 也有叫 VC8 的 ...
jixingzhong 2006-07-12
  • 打赏
  • 举报
回复
使用 using 指令 或者 using 说明符都可以 ...
wtn624 2006-07-12
  • 打赏
  • 举报
回复
我这有vc6.0 和vc2005 都通不过

顺便问下 vs2005 和 vc2005 有什么联系没?
chenhu_doc 2006-07-12
  • 打赏
  • 举报
回复
可能是修改的过程出错了! 再看看!
lyskyly 2006-07-12
  • 打赏
  • 举报
回复
用的VS2005和DEV C++能编译通过
#include<string>
namespace data
{
extern const double pi=3.14159265;
extern const std::string days[]={"sunday","monday","wednesday","thursday","friday","saturday"};
}

//-----------------------------------
//main.cpp
#include<iostream>
#include<string>
//#include"head.h"
namespace mydata //将mydata 换成data 就对
{
using data::pi;
using data::days;
}

int main()
{
std::cout<<std::endl
<<"pi has the value :"
<<mydata::pi<<std::endl;
std::cout<<"The second day of the week is :"
<<mydata::days[1]<<std::endl;

return 0;
}
wtn624 2006-07-12
  • 打赏
  • 举报
回复
lyskyly(浮生三笑) 的也错了

------ 已启动生成: 项目: 命名空间, 配置: Debug Win32 ------
正在编译...
命名空间.cpp
正在链接...
head.obj : error LNK2005: "double const data::pi" (?pi@data@@3NB) 已经在 命名空间.obj 中定义
head.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const * const data::days" (?days@data@@3QBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@B) 已经在 命名空间.obj 中定义
.\Debug/命名空间.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
生成日志保存在“file://c:\Documents and Settings\tcl\桌面\question\file\Debug\BuildLog.htm”
命名空间 - 3 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
chenhu_doc 2006-07-12
  • 打赏
  • 举报
回复
lyskyly(浮生三笑) 正确!
triace_zhang 2006-07-12
  • 打赏
  • 举报
回复
namespace mydata //将mydata 换成data 就对
{
using namespace::data;
extern const double pi ;
extern const std::string days[];
}
lyskyly 2006-07-12
  • 打赏
  • 举报
回复
namespace mydata //将mydata 换成data 就对
{
using data::pi;
using data::days;
}

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧