class A
{
public:
A(){}
virtual ~A(){ TRACE("3\r\n"); }
virtual BOOL Create(DWORD a) {
TRACE("2\r\n");
return TRUE; }
};
class B : public A
{
public:
B() {}
virtual ~B() { TRACE("4\r\n"); }
BOOL Create(DWORD a, DWORD b, int c) {
TRACE("1\r\n");
return true;
}
};
A* p = new B;//這個地方不會自動轉換型別了 ((B*)p)->Create(1, 2, 3);
p->Create(1, 2, 3);
已經在使用的代碼..掉坑了這下 VS2019 16.7.3
是不是有啥新的轉換方法
uj5u.com熱心網友回復:
虛函式 的 引數形式和個數要一樣,才能通過基類指標呼叫要么引數形式寫成一樣, 要么明確型別再呼叫
class A
{
virtual BOOL Create(DWORD a, DWORD b=0, int c=0) ;
}
class B : public A
{
virtual BOOL Create(DWORD a, DWORD b=0, int c=0) ;
}
p->Create(1, 2, 3);
或者
((B*)p)->Create(1,2,3)
uj5u.com熱心網友回復:
class B : public A{
virtual BOOL Create(DWORD a, DWORD b=0, int c=0) ;
}
uj5u.com熱心網友回復:
對 他現在的新版本必須這樣 但是在2019 16.7.3以前的就不用 vs2015 vs2013都可以直接呼叫繼承類的Create
我原來的代碼已經用于生產了
蛋疼的玩意 現在編譯不了 2019還裝不了老版本
uj5u.com熱心網友回復:
這樣子我是知道的
還有強制指定型別 ((B*)p)->Create(1,2,3)
這樣我框架就沒用了
我有很多繼承類 引數都不相同的
只有在這個vs2019新版本上 編譯不了 老版本都可以正常編譯 vs2015 2013一樣可以
要是全改 工程量太大了
vs2019的老版本也沒法安裝 這東西真的草蛋
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/170006.html
標籤:基礎類
上一篇:VB6 多次快速打開保存txt
