1
我對着下面計劃工作在調試版本罰款,但在發行失敗建設
#include "lib/A/inc/A.h"
main()
{
A a;
a.f1();//this fails in release build and works fine in debug build
a.f2();//this fails in release build and works fine in debug build
}
一個
僞代碼給出在Visual Studio中的發佈版本的問題,從目前在LIB B來源/ B/INC /了Bh
class A :public B
{
virtual f2();
};
B具有純虛函數f2()和正常F1()
class B {
private:
string name;
public:
void f1();
virtual void f2() = 0;
};
我走進了f1()函數。此時B的這個指針的值爲0x0000000,__vfptr無效。
但是在main()中,對象a是有效的,__vfptr也是有效的。任何想法爲什麼這發生在發佈版本?
你可以給真正的代碼,而不是pseaudo碼? – stijn 2010-08-27 07:10:52
在VC++上調試版本構建http://msdn.microsoft.com/en-us/library/fsk896zz.aspx – DumbCoder 2010-08-27 07:15:08
當你說「失敗」時,這意味着什麼? (除此之外,基里爾和我已經花了很多努力來設置你的問題的格式,請看看我們已經完成並從中學到了什麼。) – sbi 2010-08-27 07:31:17