如何为非静态方法声明变量

时间:2020-05-12 11:44:50

标签: c++

我有一个要在其中使用方法的成员变量的类:

template<typename T>
class ParamTest : public Action<T> {
public:
    typedef void (*mixfunctype)(const T &t1, const T &t2, T &t3, double dParam);
    mixfunctype curFunc;
    void setMode(int iMode);
    ...
protected:
    void test1(const T &t1, const T &t2, T &t3, double dParam);
    void test2(const T &t1, const T &t2, T &t3, double dParam);
    ...
}

和代码中

template<typename T>
void ParamTest<T>::setMode(int iMode) {
    if (iMode == 0) {
        curFunc = &test1;
    } else {
        curFunc = &test2;
    }
} 

但是编译器不喜欢这样

error: cannot convert ‘void (ParamTest<int>::*)(const int&, const int&, int&, double)’ to ‘ParamTest<int>::mixfunctype’ {aka ‘void (*)(const int&, const int&, int&, double)’} in assignment
     curFunc = &test1;

我应该如何声明变量curFunc,如何为它分配一个函数以具有可编译的代码?

0 个答案:

没有答案