我想将函数存储为类成员,并在类内部调用它?很像一个回调函数。我的类(class)绘制了一个文档,但是每个文档都必须以不同的方式绘制。因此,我想将一个函数(在类外部编写)分配给该类的一个成员,然后在我要绘制文档时调用它。

此功能主要负责根据每个特定文档转换对象。

这是我的课:

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.
}

10-08 07:52