2013-09-21 65 views
-1
ConverterProxy *pthis; 

ConverterProxy::ConverterProxy() { 
    pthis = this; 
    converter::callWhenUpdated(&CallBack); 
} 

void ConverterProxy::CallBack() { 

    pthis->updatedOutside(); 

} 

ConverterProxy::~ConverterProxy() { 

    delete pthis; 

} 

頭之前聲明指針:麻煩的實現類的

class ConverterProxy 
{ 

    Q_OBJECT 


public: 

    ConverterProxy(); 
    ~ConverterProxy(); 

    static void CallBack(); 

signals: 
    void updatedOutside(); 

}; 

這將引發一個錯誤:undefined reference to 'vtable for ConverterProxy'

當我把ConverterProxy *pthis;執行構造後,該錯誤會消失。

這種奇怪的情況是什麼原因造成的?

+2

請張貼你可以想出最小的示例代碼編譯**並顯示問題**。這段代碼有太多的代碼消失了。 –

+0

@PeteBecker是那個諷刺嗎?:D – khajvah

+1

不,它的建議可以幫助你幫助我們來幫助你。我建議遵循它併發布[小型,自包含,可編譯示例](http://sscce.org/) – Bojangles

回答

2

我不是QT的專家,但讓我猜想如何解決您的問題。 。在你的代碼中的一些QT相關的東西:

Q_OBJECT 

我不知道它所包含的內容;然而,從你的錯誤判斷,它可能會增加一些關於虛擬功能的東西,即使你沒有。嘗試從你的班級中刪除這些東西。

或者,如果你真的很需要那Q_OBJECT位,試着從QObject的繼承:

class ConverterProxy: public QObject 
{ 
    Q_OBJECT 
    ... 
}; 

有一些文件,這暗示Q_OBJECT必須連同繼承自QObject使用:http://developer.blackberry.com/native/reference/cascades/moc.html

1

不要在您的析構函數中使用delete pthis。你的對象已經被銷燬了。