请问怎么编译多文件

cthwiinnes 2007-03-15 01:00:52
这个问题困扰了很久了~~~例如下面的 程序有个类和主函数,我想把类放到头文件里.可是我按照书上的把类的定义部分放到.hpp然后把实现放到.cpp最后在主函数里包含头文件却老是说类没定义。大家可以用我给的代码说明一下.hpp应该放哪些内容,实现的.cpp文件又应该放哪些内容吗???先谢了~~~~~~~~

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
circle.hpp
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#include<iostream>

const double PI =3.14152;
const float FencePrice = 3.50;
const float ConcretePrice = 0.50;

class Circle{
private:
float radius;
public:
Circle(float r);
float Circumference(void) const;
float Area(void) const;
};

Circle::Circle(float r):radius(r)
{}

float Circle::Circumference() const
{
return 2*PI*radius;
}

float Circle::Area() const
{
return PI*radius*radius;
}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
main.cpp
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#include"Circle.hpp"
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
float r;
float FenceCost,ConcreteCost;

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);

cout << "Enter the radius of the pool:";
cin >> r;
Circle Pool(r);
Circle PoolRim(r + 3);

FenceCost = Pool.Circumference() * FencePrice ;
ConcreteCost = (PoolRim.Area() - Pool.Area()) *ConcretePrice;

cout << "Fencing Cost is $" << FenceCost << endl;
cout << "Concrete Cost is $" << ConcreteCost << endl;
system("pause");

return 0;

}
...全文
281 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cthwiinnes 2007-03-15
  • 打赏
  • 举报
回复
我用的是vc++6.0,已经建立工程了,把头文件跟main.cpp都添加到工程了~~~~~~~jixingzhong说的obj文件怎么编译出来的啊,我的头文件只有一个类~~~~~谁可以发个简单的例子给我看看吗??不知道我哪些地方放错了~~~~~~~
jixingzhong 2007-03-15
  • 打赏
  • 举报
回复
经常用的几个参数,第一是 “-o”,它后面的参数表示要输出的目标文件,再一个是 “-c”,表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接,如下面的几个命令:

gcc –c test.c,表示只编译test.c文件,成功时输出目标文件test.o

gcc –c test.c –o test.o ,与上一条命令完全相同

gcc –o test test.o,将test.o连接成可执行的二进制文件test

gcc –o test test.c,将test.c编译并连接成可执行的二进制文件test

gcc test.c –o test,与上一条命令相同

gcc –c test1.c,只编译test1.c,成功时输出目标文件test1.o

gcc –c test2.c,只编译test2.c,成功时输出目标文件test2.o

gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test

gcc –c test test1.c test2.c,将test1.o和test2.o编译并连接为可执行的二进制文件test
jixingzhong 2007-03-15
  • 打赏
  • 举报
回复
把类的定义部分放到.hpp然后把实现放到.cpp最后在主函数里包含头文件却老是说类没定义
=========================================
你在连接的时候,
需要吧这个 实现部分的 cpp 代码编译得到的 obj 也包括进来
taodm 2007-03-15
  • 打赏
  • 举报
回复
什么编译器?多文件要建工程的。

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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