C++中 const类对象的定义和声明

nppg2008 2013-12-09 04:56:48
在C++中,为什么const类对象的定义和声明在编译时链接失败?如我在一个源文件中定义cosnt string g_print = "xxxx",在另一个源文件中声明它extern cosnt string g_print,编译可以通过,链接失败: error LNK2001: 无法解析的外部符号 "class std::basic_stringconst g_print,怎么会无法找到对象的定义呢?
...全文
326 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-12-09
  • 打赏
  • 举报
回复
有以下两个可能性: 1)定义cosnt string g_print = "xxxx"的文件,前面没有 #include<string> using namespace std; 这两个语句, 或者缺少其中一个, 所以没有编译成功。 所以cosnt string g_print 没有定义。 2)你的编译器,不支持extern cosnt。 extern cosnt 虽然不是最新的特性,但是,可能你的编译器,还不支持它。
方紫涵 2013-12-09
  • 打赏
  • 举报
回复
引用 6 楼 xml111 的回复:
在C++中,使用const修饰全局变量,则其作用域为变量的定义处开始,直到定义变量的文件结束; 因此,要在其他文件使用该变量时,要用extern显示修饰。
xml111 2013-12-09
  • 打赏
  • 举报
回复
在C++中,使用const修饰全局变量,则其作用域为变量的定义处开始,直到定义变量的文件结束; 因此,要在其他文件使用该变量时,要用extern显示修饰。
方紫涵 2013-12-09
  • 打赏
  • 举报
回复
引用 4 楼 cheng7068 的回复:
能具体说明一下你的运行环境吗,这个我感觉是不是另一个源文件中没有引用头文件
与环境无关系阿:“在 C++ 看来,全局 const 定义就像使用了 static 说明符一样。” ,也就是说c++中,const变量是static的,不能在其他的source file中使用。
风行踩火轮 2013-12-09
  • 打赏
  • 举报
回复
能具体说明一下你的运行环境吗,这个我感觉是不是另一个源文件中没有引用头文件
方紫涵 2013-12-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/g5dsk/article/details/5772605
方紫涵 2013-12-09
  • 打赏
  • 举报
回复
《C++ Primer Plus(第五版)中文版》P277: 在 C++ (但不是在 C 语言)中,const 对默认存储类型稍有影响。默认情况下,全局变量的链接性为外部的,但 const 全局变量的链接性为内部的。也就是说,在 C++ 看来,全局 const 定义就像使用了 static 说明符一样。
方紫涵 2013-12-09
  • 打赏
  • 举报
回复
extern cosnt string g_print//多写了const ?

64,654

社区成员

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

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