C++类中使用函数指针问题

cj1206 2013-03-15 10:58:46
#ifndef _CFUNC_H_
#define _CFUNC_H_
#pragma once
#include <iostream>
using namespace std;
class Cfunc
{
public:
inline double func1(double x, double y)
{
return (x+y);
}
inline double func2(double x, double y)
{
return 2.0 * (x+y);
}
inline double func3(double x, double y)
{
return 3.0 * (x+y);
}
inline double func4(double x, double y)
{
return 4.0 * (x+y);
}
public:
inline void calculate(double x, double y)
{
double (Cfunc::*FUN[4])(double, double);
double s;

FUN[0] = &Cfunc::func1;
FUN[1] = &Cfunc::func2;
FUN[2] = &Cfunc::func3;
FUN[3] = &Cfunc::func4;

for(int i = 0; i != 4; i++)
{
s = (*FUN[i])(x,y);

cout<<"Num of Func: "<<i<<" result: "<<s<<endl;
}
}
};
#include "Cfunc.h"
#include <iostream>
using namespace std;

int main()
{
Cfunc test;

test.calculate(1.5,2.0);

return 0;
}
请问上述代码错在哪里,如何改正?
谢谢!
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cj1206 2013-03-15
  • 打赏
  • 举报
回复
感谢dy106
云斜月 2013-03-15
  • 打赏
  • 举报
回复
引用 1 楼 dy106 的回复:
头文件 C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344//Cfunc.h#ifndef _CFUNC_H_#define _CFUNC_H_#include <iostream>using namespace std;class Cfun……
学习了,,,,
云斜月 2013-03-15
  • 打赏
  • 举报
回复
支持函数指针数组不
_sunshine 2013-03-15
  • 打赏
  • 举报
回复
头文件

//Cfunc.h
#ifndef _CFUNC_H_
#define _CFUNC_H_
#include <iostream>
using namespace std;
class Cfunc
{
	typedef double (Cfunc::*FUN)(double, double);  //声明函数指针
public:
    double func1(double x, double y)  //不需要inline,在里面定义函数默认为内联函数
    {
           return (x+y);
    }
    double func2(double x, double y)
    {
           return 2.0 * (x+y);
    }
    double func3(double x, double y)
    {
           return 3.0 * (x+y);
    }
    double func4(double x, double y)
    {
           return 4.0 * (x+y);
    }
public:
	FUN f[4];   //定义函数指针数组
    void calculate(double x, double y)
    {
        double s;
        
		f[0] = &Cfunc::func1;//指向成员函数
        f[1] = &Cfunc::func2;
        f[2] = &Cfunc::func3;
        f[3] = &Cfunc::func4;
        
        for(int i = 0; i != 4; i++)
        {
            s = (this->*f[i])(x,y);
            cout<<"Num of Func: "<<i<<" result: "<<s<<endl;
        }
    }
};
#endif
Cpp文件

#include "Cfun.h"
#include <iostream>
using namespace std;

int main()
{
    Cfunc test;
    
    test.calculate(1.5,2.0);

    return 0;
}

64,674

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧