gpt4 book ai didi

c++ - 从成员函数数组访问成员函数

转载 作者:行者123 更新时间:2023-11-27 23:20:27 25 4
gpt4 key购买 nike

我已经将几个成员函数分组到一个数组中。如何访问数组中的函数?我收到“错误 C2064:术语不计算为采用 0 个参数的函数。”见下文。

class A
{
public:

//Constructor
A()
{
//Fill function array
ClipFunction[0] = &A::ClipTop;
ClipFunction[1] = &A::ClipBottom;
ClipFunction[2] = &A::ClipLeft;
ClipFunction[3] = &A::ClipRight;
}

//Declare array
typedef void (A::*ClipFunction_ptr) ();
ClipFunction_ptr ClipFunction[4];

//Clipping functions
void ClipTop();
void ClipBottom();
void ClipLeft();
void ClipRight();

//Start clipping process
void StartClip();

};

//Define clipping functions
void A::ClipTop() {}
void A::ClipBottom() {}
void A::ClipLeft() {}
void A::ClipRight() {}

//Define A::StartClip()
void A::StartClip()
{
//Run through all functions in the array
for (unsigned int i = 0; i < 4; i++)
{
ClipFunction[i](); //ERROR. How do I access ClipFunction[i] ???
}

}

最佳答案

您需要像这样取消引用该函数:
这个->(*ClipFunction[i])();

您缺少的是 this 或者编译器提示它没有第一个参数(调用成员函数的对象的实例)将其传递给函数.

给编译器的成员函数:
void A::ClipFunction()
{
}

翻译成这样:void ClipFunction(A* this)
{
}

因此错误提示该函数不是一个采用零参数的函数。

关于c++ - 从成员函数数组访问成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371182/

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