函数指针
template<class T>
class Ctest
{
private:
T m_data;
Ctest<T> *next;
Ctest<T> *head;
int m_size;
public:
output(Ctest<T> *la)
{ cout<<"output"<<endl;}
}
typedef void (Ctest<T>::*FUNC)(Ctest<T> *la);
int main()
{
Ctest<int> a;
Ctest<int> *pa=&a;
FUNC pf=a.output;
pf(pa);
}
请问高手,这样写为什么报错了??
问题点数:40、回复次数:5Top
1 楼fiftymetre(50米深蓝)回复于 2006-03-05 19:40:33 得分 5
那就用函数对象来取代函数指针吧。Top
2 楼sinall()回复于 2006-03-05 20:14:58 得分 0
#include <iostream>
using namespace std;
template<class T>
class Ctest
{
private:
T m_data;
Ctest<T> *next;
Ctest<T> *head;
int m_size;
public:
void output(Ctest<T> *la)
{ cout<<"output"<<endl;}
};
void (Ctest<int>::*FUNC)(Ctest<int> *la); // 定义变量FUNC。
int main()
{
Ctest<int> a;
Ctest<int> *pa=&a;
FUNC = &Ctest<int>::output;
(pa->*FUNC)(pa);
}Top
3 楼cunsh(村少)回复于 2006-03-05 20:22:34 得分 0
markTop
4 楼sinall()回复于 2006-03-05 20:33:50 得分 35
#include <iostream>
using namespace std;
template<class T>
class Ctest
{
private:
T m_data;
Ctest<T> *next;
Ctest<T> *head;
int m_size;
public:
void output(Ctest<T> *la)
{ cout<<"output"<<endl;}
};
typedef void (Ctest<int>::*FUNC)(Ctest<int> *la);
int main()
{
Ctest<int> a;
Ctest<int> *pa=&a;
FUNC pf = &Ctest<int>::output;
(pa->*pf)(pa);
}Top
5 楼liujianleiwj(雷雨)回复于 2006-03-05 21:08:17 得分 0
好的,谢啦,散分Top




