2013-09-21 70 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。你的对象已经被销毁了。