0

我是 C++ 新手,我尝试用谷歌搜索和搜索以找到答案,但无济于事。很可能这应该是一个愚蠢的问题。

我总是难以理解函数指针及其语法。

这是我第一次在一些严肃的代码中使用它。

我有一个像这样的单身课程。未显示单例方法。

class Derived:public base
{
    int fn();
    // This function has a single argument which 
    // is function pointer to any of the base class
    // function having same argument/return type of 
    // the singleton object.
};

class base
{
   public:
   int ConvertIntIndex(const unsigned int Index);
   int ConvertStringIndex(const unsigned int Index);
   int ConvertOidIndex(const unsigned int Index);
}

如何声明fn()以及如何通过单例对象调用它。我尝试了不同的选项,甚至无法编译它。我遇到了很多错误,如果需要,我会发布这些详细信息。我过得很艰难。如果存在,任何人都可以帮助或指出重复项吗?如果有的话我会删除这个帖子。

谢谢。

4

3 回答 3

1

我猜你正在寻找这个:

class Derived: public base
{
    int fn(int (base::*arg)(unsigned int));
};

在里面fn,你会这样使用arg

return (this->*arg)(7);

该语法int (base::*p)(unsigned int)创建一个指向成员函数的指针。您可以将它与指向对象的指针(或引用)一起使用来调用成员函数。要取消对指针的引用,您可以将 use->*与指向对象的指针或.*对象本身一起使用。

于 2013-02-05T15:59:32.020 回答
0

您可以将基类的指针作为参数发送到fn(). 你为什么不发布错误信息呢?

于 2013-02-05T12:17:53.907 回答
0

你的意思是指向成员函数的指针吗?然后尝试:(更正评论)。你需要一个基础对象来调用 fp

typedef double (base::*bfptr)(double);

int fn(bfptr fp);
于 2013-02-05T13:53:21.607 回答