gpt4 book ai didi

C++成员函数调用

转载 作者:太空狗 更新时间:2023-10-29 20:43:30 24 4
gpt4 key购买 nike

好吧,我经常看到使用以下类型的事件处理:

Connect(objectToUse, MyClass::MyMemberFunction);

用于 objectToUse 类型为 MyClass 的某种事件处理。我的问题是这究竟是如何工作的。您如何将其转换为可以执行 objectToUse->MyMemberFunction()

的操作

MyClass::MyMemberFunction 是否给出了从类的开头开始的偏移量,然后可以将其用作函数指针?

最佳答案

除了 Mats 的回答之外,我还会给你一个简短的例子,说明如何在这种类型的事情中使用非静态成员函数。如果您不熟悉指向成员函数的指针,您可能需要查看 FAQ首先。

然后,考虑这个(相当简单的)例子:

class MyClass
{
public:
int Mult(int x)
{
return (x * x);
}

int Add(int x)
{
return (x + x);
}
};

int Invoke(MyClass *obj, int (MyClass::*f)(int), int x)
{ // invokes a member function of MyClass that accepts an int and returns an int
// on the object 'obj' and returns.
return obj->*f(x);
}

int main(int, char **)
{
MyClass x;

int nine = Invoke(&x, MyClass::Mult, 3);
int six = Invoke(&x, MyClass::Add, 3);

std::cout << "nine = " << nine << std::endl;
std::cout << "six = " << six << std::endl;

return 0;
}

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

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