0
我想做一個可以作爲類成員調用的函數。這裏是一些代碼:直接包裝函數在C++類
#include <iostream>
using namespace std;
class CTest;
void CTestSum(CTest* ptr, int a, int b);
class CTest{
public:
int i;
void sum(int a, int b);
CTest() : i(0), sum(CTestSum)
{
}
};
void CTestSum(CTest* ptr, int a, int b)
{
++ptr->i;
cout << (ptr->i)+a+b << endl;
}
int main() {
CTest instance;
instance.sum(2, 4);
return 0;
}
最終,該函數將最終在一個DLL或庫。又見http://ideone.com/csueum 編譯與以下錯誤消息失敗:
prog.cpp: In constructor 'CTest::CTest()':
prog.cpp:12:18: error: class 'CTest' does not have any field named 'sum'
CTest() : i(0), sum(CTestSum)
我在做什麼錯?
C++中的變量類型永遠不能是函數類型。你的'CTest :: sum'是一個成員函數,而不是數據成員。 –
使用std :: function –
我知道,但是當'sum'是指向函數的指針時,它沒有指向類實例的指針,因爲它沒有作爲方法解析,而是作爲變量解析。當我調用''instance.sum(2,4)''時,程序只推送4和2,不包括指向棧上的類實例的指針。 – bajos