C++ 函数数组

标签 c++ arrays function

我正在尝试处理函数数组,但是当我将函数分配给数组时(在类的默认构造函数中),我收到错误消息:

"void (GameObject::*)()" cannot be used to initialize an entity of type "AlarmFunction""

处理这个的所有代码如下,这都在头文件中:

#include "stdafx.h"
#include <Windows.h>

typedef int (*AlarmFunction) ();

class GameObject
{
protected:
GameObject()
{
    AlarmFunction alarmF[12] =
    {
        AlarmEvent1,
        AlarmEvent2,
        AlarmEvent3,
        AlarmEvent4,
        AlarmEvent5,
        AlarmEvent6,
        AlarmEvent7,
        AlarmEvent8,
        AlarmEvent9,
        AlarmEvent10,
        AlarmEvent11,
        AlarmEvent12
    };
}
//private default constructor
~GameObject();
int instance_id;
int object_id;
int alarm[12];
void AlarmEvent1();
void AlarmEvent2();
void AlarmEvent3();
void AlarmEvent4();
void AlarmEvent5();
void AlarmEvent6();
void AlarmEvent7();
void AlarmEvent8();
void AlarmEvent9();
void AlarmEvent10();
void AlarmEvent11();
void AlarmEvent12();
AlarmFunction alarmF[12];

public:
void AlarmTick()
{
    for (int i=0;i<=11;i++)
    {
        if (alarm[i] > -1)
        {
            alarm[i]--;
        }
        else
        {
            if (alarm[i] == 0)
            {
                alarmF[i]();
            }
        }
    }
}

我在网上找不到太多关于此错误或如何修复它的信息,如果有人能为我阐明错误,我将不胜感激。

最佳答案

那是因为您试图将指向成员函数的指针分配给指向自由函数指针类型的字段。它们是不兼容的类型。

我不确定确切的语法,因为我不必处理指向成员函数的原始指针(无论如何,std::function 在大多数情况下都更好),但您可以尝试类似这样的东西,看看它是否有效。

class GameObject;
typedef int (GameObject::*AlarmFunction) ();

关于C++ 函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329087/

相关文章:

c++ - 使用 int 指针的 float 的位表示

c++ - 隐式构造函数调用

C++ 制作数组哈希

Mac 上的 C++ 分析

C++宏定义不清楚

javascript - 如何从同一对象的函数内部的函数传递对象的函数?

javascript - 从 javascript 函数生成 django HTML URL

c - void* 函数指针数组转换

javascript - 如何通过检查 JavaScript 中的对象是否未定义来将对象插入数组

javascript - 覆盖/替换多维数组中的值