gpt4 book ai didi

c++ - 函数指针在带参数的对象中使用函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:45 24 4
gpt4 key购买 nike

我一直在研究 C++ 中的函数指针,似乎发现了一点问题。我制作了一个演示以在一个简单的示例中重现该错误。

我有头文件

class MyClass
{
public:
void MyFunction(int i);
MyClass();
~MyClass();
};

和cpp文件

#include "MyClass.h"
#include <iostream>
#include <functional>
using namespace std;

MyClass::MyClass()
{
//doesn't work
function<void(int)> func = &MyClass::MyFunction;
}

void MyClass::MyFunction(int i)
{
cout << i << endl;
}

在 cpp 文件的构造函数中,我试图创建一个指向 MyFunction 的指针。它给出错误 error C2664: 'void std::_Func_class<_Ret,int>::_Set(std::_Func_base<_Ret,int> *)' : cannot convert argument 1 from '_Myimpl *' to 'std::_Func_base<_Ret,int> *'在第 506 行的功能文件中。它适用于无参数方法,但不适用于它们。有谁知道为什么,以及如何解决它?

最佳答案

您可以使用this 并将正在构造的对象绑定(bind)到该函数。例如,如果您的构造函数如下所示:

MyClass::MyClass()
{
function<void(int)> func = bind(&MyClass::MyFunction, this, placeholders::_1);
func(6);
}

并且您创建了一个 MyClass 实例:

MyClass instance;

然后 6 将被打印到标准输出。

关于c++ - 函数指针在带参数的对象中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505875/

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