-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;在构造函数的实现之后放置时,该错误消失了。

造成这种奇怪情况的原因是什么?

4

2 回答 2

2

我不是 QT 方面的专家,但让我猜猜如何解决您的问题。您的代码中有一些与 QT 相关的内容:

Q_OBJECT

我不知道它包含什么;但是从你的错误来看,它可能会在你的类中添加一些关于虚函数的东西,即使你没有任何东西。尝试从课堂上删除这些东西。

或者,如果您真的需要那个Q_OBJECT位,请尝试从 QObject 继承:

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

有一些文档,提示Q_OBJECT必须与继承一起使用:http QObject: //developer.blackberry.com/native/reference/cascades/moc.html

于 2013-09-21T14:01:28.273 回答
1

不要delete pthis在你的析构函数中。您的对象已经被销毁。

于 2013-09-21T13:40:58.243 回答