我不确定是否可以进行以下操作。有人可以为此要求提供同等的费用吗?
if(dimension==2)
function = function2D();
else if(dimension==3)
function = function3D();
for(....) {
function();
}
最佳答案
可能有两个假设:function2D()
和function3D()
都具有相同的签名和返回类型。function
是一个函数指针,具有与function2D
和function3D
相同的返回类型和参数。
您正在探索的技术与构造jump table所使用的技术非常相似。您有一个函数指针,您可以在运行时根据运行时条件对其进行分配(并调用)。
这是一个例子:
int function2D()
{
// ...
}
int function3D()
{
// ...
}
int main()
{
int (*function)(); // Declaration of a pointer named 'function', which is a function pointer. The pointer points to a function returning an 'int' and takes no parameters.
// ...
if(dimension==2)
function = function2D; // note no parens here. We want the address of the function -- not to call the function
else if(dimension==3)
function = function3D;
for (...)
{
function();
}
}