1.C++程序开发的程序开发的文件的布局,比如说Java的文件都放在不同的包里,这样好归类,C++是不是都放在一起?
2.写一个类的时候有一个.h文件和.cpp文件,这2个文件各自主要处理什么。
3.本人写了一个简单的测试用例,包含A.h, A.cpp, B.cpp
//-------------------- A.h
// 定义接口Atemplate<class T>
class A {
public : A();
};// 定义接口B
template<class T>
class B{
public : B();
};
2.写一个类的时候有一个.h文件和.cpp文件,这2个文件各自主要处理什么。
3.本人写了一个简单的测试用例,包含A.h, A.cpp, B.cpp
//-------------------- A.h
// 定义接口Atemplate<class T>
class A {
public : A();
};// 定义接口B
template<class T>
class B{
public : B();
};
#include "A.h"template<class T>
A<T>::A() {
B<int> *b = new B<int>();
};void test() {
A<int> *a = new A<int>();
}// ---------------B.cpp
template<class T>
B<T>:B() {};以上三个文件为什么编译不通过,说Error 1 error LNK2019: unresolved external symbol "public: .....
然后我把B.cpp中的内容放到A.cpp中就编译通过了。这是什么问题呢?
不一定,根据需要。2.写一个类的时候有一个.h文件和.cpp文件,这2个文件各自主要处理什么。
通常在h中放各种声明,包括常量、类型、宏的,在cpp中放代码和数据。3.本人写了一个简单的测试用例,包含A.h, A.cpp, B.cpp
类模板要把函数代码写在class里面。
template <class T>
class B{
public:
B()
{
}
};
template <class T>
class A {
public:
A()
{
B <int> *b = new B <int>();
}
};
2.H负责定义,CPP负责实现。
3. B.cpp 是不是没有包含头文件?
#include <cstdlib>using namespace std;template<class T>
class MList {
public :
MList();};template<class T>
class MListItem{
public :
MListItem(T value, MListItem* item);
};
// MList.cpp
#include <cstdlib>
#include <iostream>
#include "MList.h"template <class T>
MList<T>::MList() {
MListItem<int> *item = new MListItem<int>(10,0);
};void test() {
MList<int> *list = new MList<int>();
}// MListItem.cpp
#include "MList.h"
#include <cstdlib>using namespace std; template<class T>
MListItem<T>::MListItem(T value ,MListItem* item) {};
如果把MListItem.cpp中的实现放到MList.cpp中就可以编译通过,如果分下来就不通过。
8楼的兄弟:把B前置声明一下。(是什么意思,具体怎么做?)
.cpp 方法、函数的具体实现过程,变量的处理。提供给别人用或使用别人的代码时,看.h基本就能了解作用了。有利于团队开发。