在模板类中使用函数指针vector,使用iterator类型时编译报错

Wugifer 2008-06-03 05:12:15
如下代码编译不过
template < class T > class MyClass {
public:

typedef void (*Handle) (T);

static vector < Handle > v;

static void Reg(Handle h) {
v.push_back(h);
};

static void Run(T t) {
vector < Handle >::iterator it = v.begin(); // 报错 expected `;' before "it"
};
};

1. 把typedef中的T改成确定类型比如int,double就不再报错;
2. Reg函数没有报错,说明使用vector是没有问题的,可是不能使用iterator该如何遍历呢?
...全文
262 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-06-03
  • 打赏
  • 举报
回复


#include <vector>
using namespace std;
typedef void * Handle;
template < class T > class MyClass {
public:

typedef void (*Handle) (T);

static vector < Handle > v;

static void Reg(Handle h) {
v.push_back(h);
};

static void Run(T t) {
vector < Handle >::iterator it = v.begin(); // 报错 expected `;' before "it"
};
};

void main()
{
MyClass<int>* m = new MyClass<int>();
}



这没问题啊,我在vc下编译运行通过呢!没报错!怎么?人品太好了??哈哈~!

不知道楼上几位,为啥那么做?有啥理由没?说说,学习学习!!
leelittlelong 2008-06-03
  • 打赏
  • 举报
回复
2. Reg函数没有报错,说明使用vector是没有问题的,可是不能使用iterator该如何遍历呢?

不用iterator 可以用[]来访问vector的元素。。
不过这里肯定是可以用iterator的啊。
leelittlelong 2008-06-03
  • 打赏
  • 举报
回复
1. 把typedef中的T改成确定类型比如int,double就不再报错;

这个在我这没问题 用T也可以。
toto996 2008-06-03
  • 打赏
  • 举报
回复
我在VS2005下不会报错哦
Peter_Cheung 2008-06-03
  • 打赏
  • 举报
回复
改了版面, 大家给点意见, 谢谢
http://forum2.kingofcoders.com
Wugifer 2008-06-03
  • 打赏
  • 举报
回复
OK了,谢谢
baihacker 2008-06-03
  • 打赏
  • 举报
回复
#include <vector>
using namespace std;
typedef void * Handle;
template < class T > class MyClass {
public:

typedef void (*Handle) (T);

static vector < Handle > v;

static void Reg(Handle h) {
v.push_back(h);
};

static void Run(T t) {
typename vector < Handle >::iterator it = v.begin(); // 报错 expected `;' before "it"
};
};
taodm 2008-06-03
  • 打赏
  • 举报
回复
typename vector < Handle >::iterator it

64,670

社区成员

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

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