问一个将vector作为模版参数传入

eatsweetpotato 2008-07-28 04:05:36
#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

template < template <class T> class my_class , class B >
class TEST
{
private:
my_class<B > sam;
int a;
public:
TEST(){ a = 2222 ; }
void show() ;
void push(B value);
};


template <template <class T> class my_class , class B >
void TEST<my_class,B >::show()
{

int i;
for (i=0 ; i<sam.size();i++)
cout <<sam[i]<<" ";
}

template <template <class T> class my_class , class B >
void TEST<my_class , B>::push(B value)
{
sam.push_back(value);
}

int main()
{
TEST<vector,int> p; // 这里的问题
//类模板“std::vector”的模板参数列表与模板参数“my_class”的模板参数列表不匹配
p.show();

//cin.get();
return 0;

}
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guzhilei1986 2008-07-29
  • 打赏
  • 举报
回复
不懂哦
xiao_ke 2008-07-29
  • 打赏
  • 举报
回复
LZ 是个不走寻常路的人哇~
个人觉得模板里头在来模板有点让程序变得难以理解! 本来模块就够抽象了,再抽象下去就比较晕晕:<
eatsweetpotato 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tjianli 的回复:]
template <typename T>
class TEST
{
};

//调用
TEST <vector <int> > t;
这样使用不是很方便!
[/Quote]
虽然说这样也可以,但我觉得,这样一来通用性太大,反而有时候会因为传入一个错误的参数而出现问题
wjb_yd 2008-07-28
  • 打赏
  • 举报
回复
顶楼上,学习了...
Gob00st 2008-07-28
  • 打赏
  • 举报
回复
应为vector默认不止一个参数,所以要加上第二个参数allocator

template < template <class T,typename = std::allocator<T> > class my_class , class B >
class TEST
{
private:
my_class <B > sam;
int a;
public:

};
wangdeqie 2008-07-28
  • 打赏
  • 举报
回复

//改成这样,运行环境:VC6
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;

template<class B>
class my_class
{
public:
int size(){return 0;}
int operator[](int i){return 0;}
};

template < class T, class B >
class TEST
{

private:
my_class <B > sam;
int a;
public:
TEST(){ a = 2222 ; }
void show() ;
void push(B value);

};

template < class T, class B >
void TEST <T,B >::show()
{

int i;
for (i=0 ; i <sam.size();i++)
cout <<sam[i] <<" ";
}

template < class T, class B >
void TEST < T, B>::push(B value)
{
sam.push_back(value);
}
int main()
{

TEST <vector<int>,int> p; // 这里的问题
//类模板“std::vector”的模板参数列表与模板参数“my_class”的模板参数列表不匹配
p.show();

//cin.get();

return 0;

}
jay的Fans 2008-07-28
  • 打赏
  • 举报
回复
template<typename T>
class TEST
{
};

//调用
TEST<vector<int> > t;
这样使用不是很方便!
emacsnw 2008-07-28
  • 打赏
  • 举报
回复
g++
没问题。
xiao_ke 2008-07-28
  • 打赏
  • 举报
回复

#include <iterator>

using namespace std;

template < template <class T, class _Ax = allocator<T> > class my_class , class B >
class TEST
{
private:
my_class <B> sam;
int a;
public:
TEST(){ a = 2222 ; }
void show() ;
void push(B value);
};


template < template <class T, class _Ax = allocator<T> > class my_class , class B >
void TEST <my_class,B >::show()
{

int i;
for (i=0 ; i <sam.size();i++)
cout <<sam[i] <<" ";
}

template < template <class T, class _Ax = allocator<T> > class my_class , class B >
void TEST <my_class , B>::push(B value)
{
sam.push_back(value);
}


64,654

社区成员

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

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