2010-08-27 52 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

回答

相关问题