考虑以下情况:
您将获得指向函数的指针作为原始指针
void * function_pointer;
并且要传递给函数的参数可作为联合类型的向量使用。
union Types {
void *ptr;
float *ptr_float;
double *ptr_double;
float fl;
int in;
double db;
bool bl;
};
std::vector<Types> arguments;
因此,函数的签名仅在程序状态下可用(而不是在编译时已知)
进行此调用的推荐方法是什么(C++ 11)?
可以将参数向量更改为如下所示:
std::vector< std::pair<int,Types> > arguments;
其中对的第一个元素将清楚地识别参数的类型。
从技术上讲,签名仅以第二种形式给出。因为仅在第一种形式中,您无法分辨签名是什么样的。