magician
I love C++
posts - 6,comments - 20,trackbacks - 0
 
class BaseA
{
public:
        
virtual void FuncA1() = 0;
        
virtual void FuncA2() = 0;
}
;

class BaseB
{
public:
        
virtual void FunB1() = 0;
        
virtual void FunB2() = 0;
}
;

class Sample : public BaseA,public BaseB
{
public:
        
virtual void FuncA1()
        
{
            cout
<<"BaseA::FuncA1"<<endl;
        }

        
virtual void FuncA2()
        
{
            cout
<<"BaseA::FuncA2"<<endl;
        }

        
virtual void FunB1()
        
{
            cout
<<"BaseB1"<<endl;
        }

        
virtual void FunB2()
        
{
            cout
<<"BaseB2"<<endl;
        }

}
;
    你们有什么方法可以求出基类的地址,这个问题现在阻碍我下一篇文章的发表,我尝试的N多方法,发现思路不正确,我们可以一起来解决这个问题....
posted on 2005-09-28 02:32 magician 阅读(497) 评论(4)  编辑 收藏 引用

FeedBack:
# re: 有么办法可以得到基类的地址??
2005-09-28 08:25 | TechLab
这个地址是根据编译器不同有区别的,Virtual继承的时候有的是把vptr指针放开始位置,有的是放在最后面的。甚至有的对vptr做了优化处理,关于这个方面的知识你可以去看《Inside Object Modle》  回复  更多评论
  
# re: 有么办法可以得到基类的地址??
2005-09-28 08:38 | ilovevc
使用static_cast不行吗?   回复  更多评论
  
# re: 有么办法可以得到基类的地址??
2005-09-28 12:52 | magician
用过staic_cast还是得不到  回复  更多评论
  
# re: 有么办法可以得到基类的地址??
2005-09-29 11:08 | moogle
Sample p_sample = new Sample;

BaseA* p_baseA = reinterpret_cast<BaseA*>(p_samle);
cout<<&p_baseA<<endl;

BaseB* p_baseB = reinterpret_cast<BaseB*>(p_samle);
cout<<&p_baseB<<endl;

This should be works.
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理