xmggman 2016-10-20 06:43 采纳率: 0%
浏览 6725

c++,在类中使用函数指针时碰上错误:表达式必须具有 (pointer-to-) 函数类型

在Model类中定义了两个函数和一个函数指针,并在构造函数中将指针指向其中一个函数,如下:
class Model
{
public: double (Model::*fun)(int i) const;
public: double f1( int i ) const;
double f2(int i) const;
Model(bool condition)
{ if (condition ) fun = &Model::f1;
else fun = &Model::f2;
}
};
在另外一个类B中定义了一个Model常指针model,并指向了一个Model常实例m,至此都没有问题,但是在B中使用以下语句时即出现错误
(model->fun)( i )
并提示:项不会计算为接受一个参数的函数
一楼有提及使用方式_( (model->fun)( i ))_,我也试过,这个好像才是函数指针的标准用法,但也不行,还多了一个错误:
错误 2 error C2171: “
”:“double (__thiscall Model::* const )(int i) const”类型的操作数非法

  • 写回答

1条回答 默认 最新

  • oyljerry 2016-10-20 06:50
    关注

    这样试试呢

     (*(model->fun))( i )
    
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用