返回信息流我想创建一个vector,类型是指向函数的指针,应该怎么写?
谢谢
这是一条镜像帖。来源:北邮人论坛 / soft-design / #19496同步于 2007/7/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[求助]C++中关于vector的一个问题
jasonwolf
2007/7/5镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
我是这样写的:
typedef void (*functionpointer)();
class FuncTable{
vector<functionpointer>funTab;
public:
void add(void (*f)());
void remove();
void run();
};
但还是不行
我又这样写:
#include <iostream>
#include <vector>
using namespace std;
typedef void (*functionpointer)();
void fun1(){
cout<<"this is the fun1 call"<<endl;
}
int main(){
vector<functionpointer>function;
function.push_back(fun1);
function[0]();
return 0;
}
报的错误是:
rror C2664: 'push_back' : cannot convert parameter 1 from 'void (void)' to 'void (__cdecl *const & )(void)'
注:我用的是VC6.0
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
typedef void (*functionpointer)();
void fun1(){
cout<<"this is the fun1 call"<<endl;
}
int main(int argc, char *argv[])
{
vector<functionpointer>function;
functionpointer ptr = &fun1;//通过指针来做
function.push_back(ptr);
function[0]();
system("PAUSE");
return EXIT_SUCCESS;
}
我试过了可以编译过去结果也正确
我在Dev-c++中编译的
【 在 jasonwolf (雪狼) 的大作中提到: 】
: 我又这样写:
: #include <iostream>
: #include <vector>
: ...................
如果你不用指针的话
要这么写function.push_back(&fun1);//你建了个functionpointer类型的vector,相当于一个指针数组,里面的成员当然是指针而不是fun1
【 在 jasonwolf (雪狼) 的大作中提到: 】
: 我又这样写:
: #include <iostream>
: #include <vector>
: ...................
#include <cstdlib>
是哪里需要的?
【 在 iam456 的大作中提到: 】
: #include <cstdlib>
: #include <iostream>
: #include <vector>
: ...................
借楼问,碰到__cdecl这种函数调用方式的错误该怎么处理?
【 在 jasonwolf 的大作中提到: 】
: 我又这样写:
: #include <iostream>
: #include <vector>
: ...................