这段代码是什么意思,小白求解本帖最后由 w835369950 于 2013-03-06 10:55:01 编辑class ScData{public:ScD
这段代码是什么意思,小白求解
本帖最后由 w835369950 于 2013-03-06 10:55:01 编辑
class ScData
{
public:
ScData();
ScData(int len);
~ScData();
public:
float *data;
//double *libsvm_data;
int featureLen;
string name; // 字符
IplImage *img;
};
typedef ScData* (*FunPtr)(IplImage *, string, int);
FunPtr fp;
ScData *scd = fp(image, "s.xml", 2);
[解决办法]1个是申明FuncPtr 是 ScData* (*)(IplImage*, string, int) 类型;
1个是申明FunPtr 是 一个ScData* (*)(IplImage*, string, int) 类型变量。
[解决办法]前者定义一种类型,后者声明一个函数指针
[解决办法]大概是这样的吧:
typedef ScData* (*FunPtr)(IplImage *, const string&, int);
ScData* GetImageFromXML)(IplImage *, const string&, int);
FunPtr fp=GetImageFromXML;
ScData *scd = fp(image, "s.xml", 2);
实现代码:
ScData* GetImageFromXML)(IplImage *Image, const string& s, int n){
ScData*pScData=new ScData;
.....
return p;
}
delete scd;
不然只有返回外部变量(指针),静态变量(指针)或外部变量静的地址,态变量的地址才行!!
这里定义一个函数指针,
用于从某个xml里提取图像,图像名字,数据,长度的。
问题是你贴出的代码里,没有初始化那个函数指针就使用了,不知是否故意没有贴出来,如果是
那这段代码没有任何问题,否则就会出现莫名其妙的错误了,一个不知为何的地址陪你当成函数调用,
结果不会好的。