初学Linux下编程,谁给讲一下这个

翅膀又硬了 2013-06-18 10:14:49
有三个文件:Hello.h、Hello.cpp、MyFirst.cpp,内容如下:
file://Hello.h

class Hello
{
Hello();
void Display();
}

file://Hello.cpp

#include "Hello.h"
#include <iostream.h>

Hello::Hello()
{
}

Hello::Display()
{
cout << "Hello world!\n" << endl;
}

file://MyFirst.cpp

#include <iostream.h>
#include "Hello.h"

int main()
{
Hello theHello;
theHello->Display();

return 0;
}


“开始编译:g++ MyFirst.cpp -o MyFirst
呀,出错:
undefined reference to ''Hello::Hello(void)''
undefined reference to ''Hello::Display()''
呵,看来是不能链接Hello.cpp出错,先改一下
在MyFirst.cpp中:将#include "Hello.h"改为#include "Hello.cpp"
编译通过,在查查帮助,有参数 -c 可以只编译不链接

原文地址http://blog.sciencenet.cn/home.php?mod=space&uid=482324&do=blog&id=391537
补充一下,我现在没用Linux环境,得晚上回家实验,只是在这里看到了问一下
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 版主 2013-06-18
  • 打赏
  • 举报
回复
引用 2 楼 luotuo44 的回复:
用 g++ MyFirst.cpp Hello.cpp -o MyFirst
如果将Hello编译成了库,则请加-L 库名
luotuo44 2013-06-18
  • 打赏
  • 举报
回复
用 g++ MyFirst.cpp Hello.cpp -o MyFirst
翅膀又硬了 2013-06-18
  • 打赏
  • 举报
回复
40分都没人要?
_Gx 2013-06-18
  • 打赏
  • 举报
回复
引用 2 楼 luotuo44 的回复:
用 g++ MyFirst.cpp Hello.cpp -o MyFirst
+1
server_sky 2013-06-18
  • 打赏
  • 举报
回复


include是在预处理的时候进行展开的,包含cpp文件的写法就不规范。
server_sky 2013-06-18
  • 打赏
  • 举报
回复
试验应该也不会过,在cpp文件里面加上一句话,:using namespace std;,
赵4老师 2013-06-18
  • 打赏
  • 举报
回复
引用 5 楼 yunchao630 的回复:
[quote=引用 4 楼 adlay 的回复:] class 定义要以 ; 结束. 你的 class Hello {} 后面没有分号.
额,多谢提醒。直接复制过来的,没做检查。[/quote] 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。 《Linux C编程一站式学习》
翅膀又硬了 2013-06-18
  • 打赏
  • 举报
回复
引用 4 楼 adlay 的回复:
class 定义要以 ; 结束. 你的 class Hello {} 后面没有分号.
额,多谢提醒。直接复制过来的,没做检查。
www_adintr_com 2013-06-18
  • 打赏
  • 举报
回复
class 定义要以 ; 结束. 你的 class Hello {} 后面没有分号.

64,637

社区成员

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

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