c++ - 如何添加带有指向函数的指针的构造函数作为参数

标签 c++

我有以下结构(在头文件中):

struct StateTransitions {
    State currentState;
    State nextState;
    void (*fn)();

    StateTransitions (State currentState, State nextState, void (*fn)())
    {

    }
};

我正在尝试将此结构的一些实例推送到一个 vector 中(在 .cpp 文件中):

void MyClass::Start()
{

}

transitions.push_back(StateTransitions(Low, Started, &MyClass::Start));

我无法编译它。我不确定我在类中对构造函数的声明是否正确。

添加构造函数的正确方法是什么,这样我就不能将这种类型的对象添加到我的 vector 中?

我使用的是 C++11 之前的版本。

最佳答案

您不能将指针作为静态函数传递给成员函数。原因是成员函数需要将某些内容传递给 this 指针,而静态函数则不需要(并且编译器需要检查您作为 this 传递的任何内容的类型)。

另请参阅:Function pointer to member function

关于c++ - 如何添加带有指向函数的指针的构造函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159491/

相关文章:

c++ - 我的 Makefile 或 C++ 程序有什么问题?

c++ - 如何在 Linux 平台上使用 C++ 中的 gTest 检测内存泄漏

c++ - 首次使用对象后调用的全局对象构造函数

c++ - C++ 中的自限制堆大小

c++ - 如何在 Windows 上使用 QtCreator 为 Linux 构建和调试应用程序?

c++ - 为什么打印字符串数组只打印第一个字符?

c++ - regex_iterators 可以用于自定义字符串类型吗?

c++ - 将 const Key_Type& 传递给 std::map 的 operator[]

c++ - X11 KeyCode或KeySym如何转换为扫码

c++ - 在 Ubuntu 12.04 上编译 Box2D HelloWorld