gpt4 book ai didi

C++ 指向成员函数的指针

转载 作者:行者123 更新时间:2023-11-30 04:07:44 24 4
gpt4 key购买 nike

#include<iostream>
using namespace std;

struct Object{
int foo(int *a){return 0;}
};

int main(){

int (Object::**p1)(int *) = &Object::foo;

int (Object::*&p2)(int *) = *Object::foo;

}

我一直在努力解决这个问题,但我似乎无法对其进行调试。

第二行的“无效初始化”。

最佳答案

这两行都不会编译。

  1. &Object::foo 获取成员函数的地址,为您提供指向成员函数的指针。它的类型是int (Object::*)(int*),所以p1的类型必须匹配。

  2. *Object::foo 尝试对成员函数执行间接访问,这根本不是您可以做的事情。间接是您对指针执行的操作。

请注意,您为 p2 提供的类型是对指向成员函数的指针的引用,因此它不会绑定(bind)到临时对象。例如,您可以这样做:

int (Object::*p1)(int *) = &Object::foo;
int (Object::*&p2)(int *) = p1;

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

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