64,656
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
// Library code
template<class DerivedT>
class Base
{
private:
struct accessor : DerivedT //DerivedT是派生类,其中成员函数do_foo是个保护函数
{
static int foo(DerivedT& derived)
{
int (DerivedT::*fn)() = &accessor::do_foo; //获得父类do_foo的函数地址?????
return (derived.*fn)(); //获得地址后,然后用derived这个对象来调用
}
};
public:
DerivedT& derived() {
return static_cast<DerivedT&>(*this); }
int foo()
{
return accessor::foo(derived());
}
};
class R
{
protected:
int do_foo(void){return(0);};
};
template<class DerivedT>
struct accessor : DerivedT //DerivedT是派生类,其中成员函数do_foo是个保护函数
{
static int foo(/*DerivedT& derived*/)
{
int (DerivedT::*fn)() = &accessor::do_foo; //获得父类do_foo的函数地址?????
return 0/*(derived.*fn)()*/; //获得地址后,然后用derived这个对象来调用
}
};