读书人

小弟我的成员函数指针为什么编译通不过

发布时间: 2012-02-27 10:00:22 作者: rapoo

我的成员函数指针为什么编译通不过
下面是一段测试代码:
class TEST{
public:
TEST():itsID(0){ HowMany++;}
TEST(int id):itsID(id){HowMany++;}
virtual ~TEST(){HowMany--;}
virtual void setID(int);
virtual int getID() const {return itsID;}
static int getHowMany(){return HowMany;}
private:
int itsID;
static int HowMany;
};

void TEST::setID(int id){
itsID = id;
}

int TEST::HowMany = 0;
//typedef int (TEST::*pFUNC)();
int main(){
void (TEST::*pFunc)(int) = 0;
TEST *test[10];
TEST *pTest;
for(int i=0;i <10;i++){
pTest = new TEST(i);
test[i] = pTest;
pFunc = TEST::setID ; //就是这一句出错了
(test[i]-> *pFunc)(i*100);
cout < < TEST::getHowMany() < < endl;
}

for(int i=0;i <10;i++){
delete test[i];
test[i] = 0;
cout < < TEST::getHowMany() < < endl;
}
return 0;
}
我检查了一下语法没有问题啊。编译环境是g++

[解决办法]
pFunc = &TEST::setID ;
[解决办法]
LZ的程序在vc6下没错,除了i重复定义了
g++下你注释的那句应该为pFunc = &TEST::setID ;

读书人网 >C++

热点推荐