-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
    ...
};

http://developer.blackberry.com/native/reference/cascades/moc.htmlからのQ_OBJECT継承と一緒に使用する必要があることを示唆するいくつかのドキュメントがあります。QObject

于 2013-09-21T14:01:28.273 に答える
1

delete pthisデストラクタに入れないでください。オブジェクトはすでに破棄されています。

于 2013-09-21T13:40:58.243 に答える