首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

break Protected member access解决方法

2012-05-14 
break Protected member accessC/C++ code#include stdafx.h// Library codetemplateclass DerivedTcl

break Protected member access

C/C++ code
#include "stdafx.h"// Library codetemplate<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());     }};


以上代码来自网文,破坏访问 保护成员函数的权限吧,我说的不是很准确。获得保护成员函数地址,然后通过函数指针去访问。。。





[解决办法]
探讨
int (DerivedT::*fn)() = &amp;accessor::do_foo; //获得父类do_foo的函数地址?????
return (derived.*fn)(); //获得地址后,然后用derived这个对象来调用


还有个问题, 看到了吗???? accessor::do_fool 这里,

没有对象,直接对一个类的函数进行取地址,,合适吗?????
……

热点排行