我想要一个类,它能够将一个指向函数的指针和一个指向结构的指针作为其字段保存为参数。该对象的接口将是一个不带参数但将保存的参数传递给上述函数的方法 call()。用于不同参数类型和计数的此类类的家族将具有共同的抽象祖先,调用是虚拟的。
至于现在我有以下代码可以工作,尽管将 -pedantic 选项添加到 g++ 会产生错误:
class Function {
protected:
void *data;
void *function;
public:
virtual void call() = 0;
};
class SingleArgumentFunction : public Function {
public:
SingleArgumentFunction( void (*f)(int), int i ) {
int *icpy = new int(i);
function = (void*) f;
data = (void*) icpy;
}
~SingleArgumentFunction() { delete (int*)data; }
inline void call() {
( *((void (*)(int))function) )( *(int*)data );
}
};
我得到的错误正如标题所说:
warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
如何处理?