使用带有单例对象的函数指针c ++

时间:2013-02-05 12:07:50

标签: c++ singleton function-pointers

我是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()以及如何通过singleton对象调用它。我尝试了不同的选项,甚至无法编译。我收到了很多错误,并会在必要时发布这些细节。我很难过。如果存在,任何人都可以帮助或指出副本吗?如果有的话,我会删除这篇文章。

感谢。

3 个答案:

答案 0 :(得分:1)

我想你正在寻找这个:

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

fn内,您可以像这样使用arg

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

int fn(bfptr fp);