2013-05-03 61 views
2

我有一段代碼(從DLL),看起來像這樣:標量刪除析構函數

class A { 
    public: 
     virtual ~A(); 
}; 

class B : public A { 
    public: 
     ~B(); 
} 

~A() { 
    // #1 
} 

~B() { 
    // #2 
} 

當我使用delete an_instance_of_B我得到scalar deleting destructor。任何解決方法?

回答

10

請勿deleteB的實例。你應該使用指針上delete到物體new分配:

B b; 
delete b; //wrong 

//......... 

B* pB = new pB; 
delete pB; //okay 

//......... 

B justThis; //best 
+1

@丹你爲什麼不告訴我們你實際上是在做什麼? – juanchopanza 2013-05-03 08:18:00

+0

@dan在問題中發佈調用堆棧以及一些實際的代碼。 – molbdnilo 2013-05-03 08:39:44