2010-08-27 24 views
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也是有效的。任何想法爲什麼這發生在發佈版本?

+0

你可以給真正的代碼,而不是pseaudo碼? – stijn 2010-08-27 07:10:52

+1

在VC++上調試版本構建http://msdn.microsoft.com/en-us/library/fsk896zz.aspx – DumbCoder 2010-08-27 07:15:08

+0

當你說「失敗」時,這意味着什麼? (除此之外,基里爾和我已經花了很多努力來設置你的問題的格式,請看看我們已經完成並從中學到了什麼。) – sbi 2010-08-27 07:31:17

回答

相關問題