我一直在使用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的構造。它在第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> *'
。它對於無參數方法很好,但不適用於它們。有誰知道爲什麼,以及如何解決它?
非靜態成員函數需要一個對象。 – chris
所以我不能從課堂上做到這一點?或者有沒有辦法用我完全缺少的這個關鍵字來做到這一點? –