重现方法,VS2012创建一个基于对话框的应用程序,其它一切默认,Dlg第一修改为这样:
就会出现四条警告。
但是
struct IBase1 : virtual public IBase2//只要把virtual去掉警告就消失
不知道为什么。
另外遇到一个问题,子类增加 更多复杂的继承的时候,会莫名其妙崩溃,加上virtual继承就不崩溃,怪事
struct ITest
{
virtual void abc() PURE;
};
class CTestCrash: public ITest
{
virtual void abc() override{;}
};
class CMFCApplication1Dlg : public CBase1,virtual public CTestCrash//这里去掉virutal的话在某种特定复杂操作时就崩溃