【发布时间】:2015-04-08 04:21:30
【问题描述】:
我一直在使用 c++ 中的函数指针,似乎发现了一些问题。我做了一个demo,用一个简单的例子重现了这个错误。
我有头文件
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 的指针。它在第 506 行的功能文件中给出了错误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> *'。它适用于无参数方法,但不适用于它们。有谁知道为什么,以及如何解决?
【问题讨论】:
-
非静态成员函数需要一个对象。
-
所以我不能在课堂上做到这一点?或者有没有办法用我完全错过的 this 关键字来做到这一点?