初学C++,请高手看看这段代码哪里错了
#include "stdafx.h"
class C1
{
public:
void ( C1::*LL)();
staticvoid C1fu();
void funa()
{
LL=C1::C1fu;
(*LL)();
}
};
void C1::C1fu()
{
printf("1");
}
int main(int argc, char* argv[])
{
C1 c1;
c1.funa();
return 0;
}
[解决办法]
LL并非成员变量
[解决办法]
/* Auther:独酌逸醉 * Date:2012.08.05 * IDE: Code::Blocks 10.05 * OS: Windows 7 */#include <iostream>#include <cstdio>class C1{public: typedef void (*LL)(); LL ll; static void C1fu(); void funa() { ll = (LL)C1fu; (*ll)(); }};void C1::C1fu(){ printf("1");}int main(int argc, char* argv[]){ C1 c1; c1.funa(); return 0;}
[解决办法]
LZ,昨天回答了你的那个问题。还在纠结这个??。。。你那个是成员函数指针。。而你那个static是没有隐藏的this指针的。。所以是行不通的。。
[解决办法]
你这个连语法都没通过,你的函数指针LL没有声明。
把void funa()函数改成下面这样就可以了。
void funa()
{
void (*LL)();//声明LL为一个函数指针,该函数没有形参,函数的返回值类型为void
LL=C1::C1fu;
(*LL)();
}