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