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

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 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用