gpt4 book ai didi

c++ - 在 C++11 中存储对方法的引用时出错

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

我想使用 lambda 函数,但遇到问题:

如果我想将对在“全局范围”中声明的函数的引用存储为 std::function,没有问题:

int myFunction()
{
return 665;
}
int main()
{
function<int()> functionRef = myFunction; //This works
}

如果我想做同样的事情但存储对方法的引用:

//A class
class myClass
{
public:
int myMethod()
{
return 666;
}
};

//I create an instance:
myClass myInstance;

int main()
{
function<int()> functionRef2 = myInstance.myMethod; //This doesn't work... why?
}

给我这个错误:

错误 C3867:“myClass::myMethod”:函数调用缺少参数列表;使用 '&myClass::myMethod' 创建指向成员的指针

我知道在调用不带“()”的函数时会发生错误,但在这种情况下我不会调用函数。只是将它存储在一个变量上。我正在使用 Visual C++ 2010。感谢您的帮助。

最佳答案

myClass::myMethod 的类型是int (myClass::*)(),这与int(*)()

你可以使用的是

function<int()> functionRef2 = std::bind(&myClass::myMethod, &myInstance);

关于c++ - 在 C++11 中存储对方法的引用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176873/

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