gpt4 book ai didi

c++ - 类中的函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 15:49:43 25 4
gpt4 key购买 nike

我需要一个针对不同函数的开关来规避频繁的 if 指令。它应该类似于下面的代码,封装在一个类中:

#include<iostream>
#include<stdlib.h>

using namespace std;

template<class T>
class MaxSwitch
{
public:
typedef T (MaxSwitch::*Max_P)(T,T);
Max_P fooC_P;

MaxSwitch(int Q) {
if (Q==0)fooC_P=&MaxSwitch::MaxVal1;
else fooC_P=&MaxSwitch::MaxVal2;
}

inline T MaxVal1(T kx,T MAX)
{
return kx+1;
}

inline T MaxVal2(T kx,T MAX)
{
return MAX;
}

};

int main( int argc, char ** argv )
{
int Q=atoi ( argv[1] );
MaxSwitch<int> MAXSW(Q);


int MAX=5;

for ( int kx=0;kx<MAX;kx++ ) for ( int ky=0;ky<(MAXSW.fooC_P)(kx,MAX);ky++ )
{
cout<<"(kx="<<kx<<", ky="<<ky<<endl;
}

return 0;
}

我现在遇到了函数调用 (MAXSW.fooC_P)(ky,MAX) 错误的小问题。如何正确执行?

最佳答案

MAXSW.fooC_P 是指向您需要调用的成员函数的指针,MAXSW 是您要调用它的对象。所以你可以调用这个函数:

(MAXSW.*(MAXSW.fooC_P))(ky,MAX);

关于c++ - 类中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com