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分离吗?有人说声明和定义的问题,我是晕了,不知道什么是声明什么是定义了,呵呵?先谢谢各位!