关于多基类派生的歧义性问题
如下:
class B1
{
DWORD m_dwRef;
...
};
class B2
{
DWORD m_dwRef;
...
};
template < class T >
class DT : public T
{
DT()
{
m_dwRef = 1;
}
}
class D : public B1, public B2
{
...
}
DT< D > d;
这样因为m_dwRef的歧义无法编译通过。在DT::DT()中使用的m_dwRef应该是B1::m_dwRef,但是由于B1、B2、DT都是某些库的函数,不能修改,那么怎样解决这个问题?
我现在是用重新定义DT(把库里的整个定义和实现全部复制到我的程序里,再把m_dwRef改成B1::m_dwRef),但显然这方法太笨了。#define m_dwRef B1::m_dwRef我也想过,但由于DT和m_dwRef被引用很多,容易造成混乱。请问各位高手,还有没有更好的办法?