读书人

怎样访问基类的私有函数

发布时间: 2012-06-01 16:46:36 作者: rapoo

高手进,怎样访问基类的私有函数。
很迷惑,怎样访问基类的私有函数,很迷惑。
这个用虚函数,但是但是。。。。。。。没头绪啊
请高手指点

[解决办法]
声明一个和要访问函数一致的函数指针,然后计算获取对象的虚函数表地址,强转之,理论如此
要是自己写的类就更容易了,像楼上说的,改成公共的,或者声明接口
[解决办法]
有这个纠结吗。这不就是一个C++多态性的一个例子吗。

基类中,将数据私有化,然后,只能用一个公有成员去访问。

派生出一个子类,虚有化。

最后由对象去调用基类的公有成员,不就可以控制私有数据了吗。
[解决办法]

C/C++ code
#include <iostream>     using namespace std;     class A  {      public:         virtual void f(){cout<<"A"<<endl;}     };       class B:public A     {      private:         void f(){cout<<"B"<<endl;}     };       int main()  {    A* pA = new B();         pA->f();   //B      return 0;     }
[解决办法]
不要去访问基类的私有函数
这是禁止的,通过个别的技巧实现了访问也是违反设计原则的

如果必要要这么做,就修改基类好了
1,更改希望访问函数的属性(public,protected,private)
2,在基类中新加个可以访问的函数包装原来的私有函数,通过包装函数来访问私有函数

读书人网 >C++

热点推荐