#include<iostream>
using namespace std;
#include<vector>
template<typename T = int>
class A
{
private:
T a;
};
template<typename T = int, typename V = int>
class A1 : public A<T>
{
private:
V a1;
};
template<class T = A<int>, typename V = int>
class B
{
public:
void GetA()
{
std::cout << vecA.size() << std::endl;
}
private:
std::vector< T > vecA;
};
int main()
{
B<A<int>, int> b;
b.GetA();
return 0;
}
例2:
template 与 vector问题
#include<iostream>
using namespace std;
#include <vector>
using namespace std;
template<typename TAV>
class Container
{
private:
vector<TAV> m_List;
public:
void add(TAV node)
{
m_List.push_back(node);
}
void Get()
{
for(typename vector<TAV>::iterator it = m_List.begin(); it != m_List.end(); ++it) //需要添加typename
{
std::cout << *it << std::endl;
}
}
};
int main()
{
Container<int> t;
t.add(1);
t.Get();
}
例3:
template中编译出现undefined file问题
解决办法:
c++ 模板不支持分离编译模型,把实现文件中的定义移到头文件中就行了。
简单应用 后续继续扩展