#include <iostream>
#include <string>
#include <stack>
#include <vector>
#include <map>
using namespace std;
typedef int(*handler)();
class cal
{
private:
int num1;
int num2;
public:
cal():num1(0),num2(0){}
cal(int a,int b):num1(a),num2(b){}
~cal(){}
map<string,handler>cal_;
int add_()
{
return (num1+num2);
}
int sub_()
{
return (num1-num2);
}
int mul_()
{
return (num1*num2);
}
int div_()
{
return (num1/num2);
}
void map_init()
{
cal_.insert(make_pair("+",add_));
cal_.insert(make_pair("-",sub_));
cal_.insert(make_pair("*",mul_));
cal_.insert(make_pair("/",div_));
}
};
int main()
{
return 0;
}
1>.\排序.cpp(41) : error C3867: “cal::add_”: 函式呼叫缺少引數串列;請使用“&cal::add_”創建指向成員的指標
1>.\排序.cpp(42) : error C3867: “cal::sub_”: 函式呼叫缺少引數串列;請使用“&cal::sub_”創建指向成員的指標
1>.\排序.cpp(43) : error C3867: “cal::mul_”: 函式呼叫缺少引數串列;請使用“&cal::mul_”創建指向成員的指標
1>.\排序.cpp(44) : error C3867: “cal::div_”: 函式呼叫缺少引數串列;請使用“&cal::div_”創建指向成員的指標
uj5u.com熱心網友回復:
成員函式指標和函式指標是無法匹配的應該改為成員函式指標
class cal;
typedef int( cal::*handler )();
class cal
{
private:
int num1;
int num2;
public:
cal(): num1( 0 ), num2( 0 ) {}
cal( int a, int b ): num1( a ), num2( b ) {}
~cal() {}
map<string, handler>cal_;
int add_()
{
return ( num1 + num2 );
}
int sub_()
{
return ( num1 - num2 );
}
int mul_()
{
return ( num1 * num2 );
}
int div_()
{
return ( num1 / num2 );
}
void map_init()
{
cal_.insert( make_pair( "+", &cal::add_ ) );
cal_.insert( make_pair( "-", &cal::sub_ ) );
cal_.insert( make_pair( "*", &cal::mul_ ) );
cal_.insert( make_pair( "/", &cal::div_ ) );
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78755.html
標籤:基礎類
