读书人

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

发布时间: 2013-03-21 10:08:17 作者: rapoo

C++类中使用函数指针问题
#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;
}
请问上述代码错在哪里,如何改正?
谢谢! c++ class
[解决办法]
头文件


//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;
}

读书人网 >C++

热点推荐