저는 C++을 처음 사용하기 때문에 다음 코드로 인해 어려움을 겪습니다. 별표 표시된 줄에 계속 오류가 발생합니다. 나는 그것이 효과가 없지만 도움이되는 것을 찾지 못한 것에 대해 조사를 해왔다. 문제를 볼 수 있으며이를 해결하기 위해 무엇을해야하는지 설명하십시오.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 multiply\nEnter 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.cpp을 C : 문서 및 설정 \ \ 차야 내 문서 \ \ Visual Studio 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (22) : 오류 C4867 : 'MathPrg :: add': 함수 호출 누락 된 인수 목록; '& MathPrg :: add'를 사용하여 c : \ documents and settings \ chaya \ my documents \ visual 스튜디오 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (22)에 대한 포인터를 만듭니다. 오류 C4867 : 'MathPrg : : subtract ': 함수 호출 누락 된 인수 목록; '& MathPrg :: subtract'를 사용하여 c : \ documents and settings \ chaya \ my documents \ visual 스튜디오 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (22)에 대한 포인터를 만듭니다. 오류 C4867 : 'MathPrg : : 곱하기 ': 함수 호출 누락 된 인수 목록; '& MathPrg :: multiply'를 사용하여 c : \ documents and settings \ chaya \ my documents \ visual 스튜디오 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (22)에 대한 포인터를 만듭니다. 오류 C4867 : 'MathPrg : : 나누기 ': 함수 호출 누락 된 인수 목록; '& MathPrg :: divide'를 사용하여 c : \ documents and settings \ chaya \ my documents \ visual 스튜디오 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (23)에 대한 포인터를 만듭니다. 오류 C2171 : '*' : 'float (__thiscall MathPrg :: *) (float, float)'형식의 피연산자에 대해 올바르지 않습니다. c : \ documents 및 settings \ chaya \ my documents \ visual 스튜디오 2010 \ projects \ functionarray \ functionarray \ functionarray.cpp (23) : 오류 C2064 : 인수가 2 개의 인수를 취하는 함수로 평가되지 않습니다. = 0 빌드 성공 : 0 성공, 1 실패, 0 최신, 0 건너 뛰기 ======== ==
그리고 당신이 얻고있는 무슨 오류 -
당신은 클래스의 방법 (
&MathPrg::add
)의 주소를 할당 한 다음 지정된 개체/인스턴스를 호출해야? – Kevin시도해 보셨습니까 ((* f) (float, float)) []? –
님이 질문에 추가되었습니다 – user2430018