VC中
我在.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分离吗?有人说声明和定义的问题,我是晕了,不知道什么是声明什么是定义了,呵呵?先谢谢各位!
问题点数:20、回复次数:5Top
1 楼goodluckyxl(被人遗忘的狗)回复于 2005-01-20 10:54:26 得分 12
vc不支持分离是 STL的分离模型
不是你那个东西Top
2 楼dongyuanzhang(阿林)回复于 2005-01-20 10:57:22 得分 8
include最好不要带路径名。Top
3 楼xxyifan(一帆)回复于 2005-01-20 11:16:23 得分 0
to goodluckyxl(被人遗忘的狗) :
这样就对了,我说呢,呵呵Top
4 楼xxyifan(一帆)回复于 2005-01-20 13:38:33 得分 0
只能自已UP
Top
5 楼xxyifan(一帆)回复于 2005-01-20 14:02:07 得分 0
自己再UPTop




