函数指针数组错误
C++ Array of function pointers errors
我是c++的新手,我对下面的代码很困惑。我总是通过星号线得到错误。我做了一些研究为什么它不起作用,但没有发现任何有用的东西。你能看到任何问题,并解释我应该做什么来解决这个问题吗?
// FunctionArray.cpp : Defines the entry pofloat for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
class MathPrg{
public:
MathPrg(float num1, float num2)
{
num1 = num1;
num2 = num2;
int choice = presentChoices();
getAnswer(choice, num1, num2);
}
void getAnswer(int choice,float num1, float num2){
typedef float (MathPrg::*f[4]) (float, float);
**f set = {add, subtract, multiply, divide};
float answer = (*set[choice])( num1, num2 );**
cout<< answer;
}
float add(float num1, float num2){
return num1+num2;}
float subtract(float num1, float num2){
return num1-num2;}
float multiply(float num1, float num2){
return num1*num2;}
float divide(float num1, float num2){
return num1/num2;}
int presentChoices(){
cout<<"Enter 0 to add nEnter 1 to subtract nEnter 2 to multiplynEnter 3 to divide";
int choice;
cin>> choice;
return choice;
}
};
float _tmain(float argc, _TCHAR* argv[])
{
float num1, num2;
cout<<"Enter two numbers";
cin>> num1>> num2;
MathPrg mathP(num1, num2);
cin>>num1;
return 0;
}
错误:------构建开始:项目:FunctionArray,配置:调试Win32 ------FunctionArray.cppc:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(22):错误C4867: 'MathPrg::add':函数调用缺少参数列表;使用'&MathPrg::add'创建一个指向成员的指针c:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(22):错误C4867: 'MathPrg::subtract':函数调用缺少参数列表;使用'&MathPrg::subtract'创建一个指向成员的指针c:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(22):错误C4867: 'MathPrg::multiply':函数调用缺少参数列表;使用'&MathPrg::multiply'创建一个指向成员的指针c:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(22):错误C4867: 'MathPrg::divide':函数调用缺少参数列表;使用'&MathPrg::divide'创建一个指向成员的指针c:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(23):错误C2171: '*':非法操作数类型'float (__thiscall MathPrg::*)(float,float)'c:documents and settingschayamy documentsvisual studio 2010projectsfunctionarrayfunctionarrayfunctionarray.cpp(23):错误C2064: term不计算为带2个参数的函数========== 构建:0成功,1失败,最新的,0跳过 ==========
void getAnswer(int choice,float num1, float num2){
typedef float (MathPrg::*f) (float, float);
f set[] = {&MathPrg::add, &MathPrg::subtract, &MathPrg::multiply, &MathPrg::divide};
float answer = (this->*set[choice])( num1, num2 );
cout << answer;
}
很适合我。
你必须分配类的方法(&MathPrg::add
)的地址,然后在指定的对象/实例上调用它- (this->*set[choice])( num1, num2 )
,
- "错误:数组下标的无效类型'float [10001][float]'是什么意思?
- 错误:数组下标的类型"const bool[int]"无效
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 使用GCC 4.8构建错误:数组用作初始化器
- 如何修复问题中的"teminated due to timeout"错误 数组操作 |黑客兰克?
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 错误:数组的总大小不得超过0x7fffffff字节
- 错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 返回c++中的字符错误数组
- VC++错误:数组实例化的大小来自模板化的静态常量
- c++mex错误:数组下标的类型“double[mwSize]”无效
- 错误数组用作初始值设定项,我不知道错误
- 编译错误 - 数组下标'char[int]'的类型无效
- 向量在我的类中.错误:数组new [-fpermissive]中的圆括号初始化项
- 错误:数组下标的类型无效
- 错误:数组new中的size必须是整型[-fpermissive]
- 错误:数组下标的“Pixel*[__complex__ int]”类型无效
- c++错误数组显示
- C++:错误:数组下标的类型“size_t{aka long unsigned int}[size_t{aka long