C++ 类中使用函数指针解决方案

C++ 类中使用函数指针
在使用函数指针时候只有这样才能够编译通过,
h文件
#pragma once

class Test
{
public:
Test(void);
~Test(void);
void TestFuncPointer();
void GetAllBomCard(); //炸弹函数
void GetAllLineCard(); //顺子函数
void GetAllThreeCard(); //三条函数
void GetAllDoubleCard(); //对子函数

};

cpp 文件

#include "StdAfx.h"
#include "Test.h"

Test::Test(void)
{
}

Test::~Test(void)
{
}

void Test::TestFuncPointer()
{
//函数指针
typedef void (Test::*pGetAllCardFun)(/*BYTE b*/); 

//指针数组
pGetAllCardFun GetAllCardFunArray[4] ;
GetAllCardFunArray[0] = &Test::GetAllBomCard;
GetAllCardFunArray[1] = &Test::GetAllLineCard;
GetAllCardFunArray[2] = &Test::GetAllThreeCard;
GetAllCardFunArray[3] = &Test::GetAllDoubleCard;

}

void Test::GetAllBomCard()
{

}

void Test::GetAllLineCard()
{

}

void Test::GetAllThreeCard()
{

}

void Test::GetAllDoubleCard()
{

}





1, 为什么要取地址?
2,既然是内部使用, 为什么还要使用  GetAllCardFunArray[0] = &Test::GetAllBomCard;   Test :: 设置作用域 ?
------解决思路----------------------
建议楼主去掉取地址和作用域,看看发生什么异常。
------解决思路----------------------
类的使用非常的灵活,lz如果不是单纯的研究语法,完全没有必要这样实现你的逻辑
------解决思路----------------------
类的非静态成员函数指针和普通的函数指针,有所区别:
1, 为什么要取地址?
typedef void (Test::*pGetAllCardFun)(/*BYTE b*/); 
声明的其实是一个指向函数指针的指针,使用时->*、.* 中的*,对映着这边的取地址
2,既然是内部使用, 为什么还要使用  GetAllCardFunArray[0] = &Test::GetAllBomCard;   Test :: 设置作用域 ?
类的成员函数指针,需要传送this进行调用,像下面的两个指针是不同的,所以需要显示的设置作用域
 typedef void (A::*FUNC)(void);
 typedef void (B::*FUNC)(void);