VC中

xxyifan 2005-01-20 10:49:26
我在.h文件中写了一个类的声明,在同名的.cpp中写了它的成员函数的实现,然后我在另外的工程中#include这个头文件,这样,可以编译成功,可以运行。
可是,如果这样,假设上面的头文件为a.h,我写了一个b.h和b.cpp,在b.h中我#include a.h,并在b.h中由a.h中声明的类派生出一个子类,然后,我在工程中#include b.h,并把b.cpp加到工程中,不能通过编译,具体代码如下:::
1.可以运行的:
extern.h
int swap(int &a,int &b);

extern.cpp
int swap(int &a,int &b)
{
int tmp = a;
a = b;
b = tmp;
return 0;
}

下面是工程的.cpp
#include <iostream>
using namespace std;
#include "d:\c++project\extern\extern.h"
//extern int swap(); 可有可无??

int main()
{
int a = 0;
int b = 1;
swap(a,b);
cout<<a<<" "<<b<<endl;
return 0;
}

2.不能运行的

base.h
class base
{
public:
void swap(int &a,int &b);
protected:
int _size;
};

base.cpp
int base::swap(int &a,int &b)
{
int tmp =a;
a = b;
b = a;
}

son.h
#include <iostream>
using namespace std;
#include "d:\c++project\base\base.h"

class son : public base
{
public:
void size();
private:
int son_size;
};

son.cpp
int son::size()
{
return son_size;
}

工程.cpp
#include <iostream>
using namespace std;
#include "d:\c++project\son\son.h"
int main()
{
son s1;
s1.size();
int a = 0;
int b = 1;
s1.swap(a,b);
cout<<a<<" "<<b<<endl;
return 0;
}

VC是不支持那个.h和.cpp分离吗?有人说声明和定义的问题,我是晕了,不知道什么是声明什么是定义了,呵呵?先谢谢各位!

...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxyifan 2005-01-20
  • 打赏
  • 举报
回复
to goodluckyxl(被人遗忘的狗) :
这样就对了,我说呢,呵呵
dongyuanzhang 2005-01-20
  • 打赏
  • 举报
回复
include最好不要带路径名。
goodluckyxl 2005-01-20
  • 打赏
  • 举报
回复
vc不支持分离是 STL的分离模型
不是你那个东西
xxyifan 2005-01-20
  • 打赏
  • 举报
回复
自己再UP
xxyifan 2005-01-20
  • 打赏
  • 举报
回复
只能自已UP

64,654

社区成员

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

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