[英]How to store a function in a member of class? (Using function as callback)
我想将函数存储为类成员,并在类内部调用它? 很像一个回调函数。 我的班级绘制了一个文档,但是每个文档都必须以不同的方式绘制。 因此,我想将一个函数(在类外部编写)分配给该类的一个成员,然后在我要绘制文档时调用它。
此功能主要负责根据每个特定文档转换对象。
这是我的课:
class CDocument
{
public:
CDocument();
~CDocument();
void *TransFunc();
}
void Transform()
{
}
int main()
CDocument* Doc = new CDocument();
Doc->TransFunc = Transform();
}
我知道这可能是一个简单的问题,但是我无法通过谷歌搜索或搜索找到答案。
我认为,这就是您可能想要的。 如有疑问,请与我联系。
class CDocument
{
public:
CDocument():myTransFunc(NULL){}
~CDocument();
typedef void (*TransFunc)(); // Defines a function pointer type pointing to a void function which doesn't take any parameter.
TransFunc myTransFunc; // Actually defines a member variable of this type.
void drawSomething()
{
if(myTransFunc)
(*myTransFunc)(); // Uses the member variable to call a supplied function.
}
};
void Transform()
{
}
int main()
{
CDocument* Doc = new CDocument();
Doc->myTransFunc = Transform; // Assigns the member function pointer to an actual function.
}
您需要使用Pointer成员函数 。
typedef void (CDocument::*TransFuncPtr)();
然后,您可以将TransFuncPtr
用作类型 。
进行编辑似乎只需要一个指向Free函数的指针即可。
这是一个小样本 。
#include<iostream>
#include<string>
typedef void (*TransFuncPtr)();
class Myclass
{
public:
TransFuncPtr m_funcPtr;
};
void doSomething(){std::cout<<"Callback Called";}
int main()
{
Myclass obj;
obj.m_funcPtr = &doSomething;
obj.m_funcPtr();
return 0;
}
由C ++继承的C声明语法很棘手。
您的声明
void *TransFunc();
实际上与
void* TransFunc();
它声明一个函数返回一个指针,而不是一个指向函数的指针。
要使*
绑定到声明的名称而不是类型,您必须使用一组额外的括号
void (*TransFunc)();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.