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