6

[解決済み]この問題は、5-6 回のクリーンアップとリビルドで何とか解決しました。コードは変更されていません。

デフォルトのコンストラクターを持つクラスと、8 つの引数を取るコンストラクターがあります。

別のクラスからコンストラクターを呼び出して 8 つのパラメーターを渡そうとしていますが、これを実行しようとするとLNK2019 Error.

私を混乱させるのは、デフォルトのコンストラクターを何も呼び出さない場合、プログラムがコンパイルして正常に実行されることです...すべてが正しいインクルードを持ち、デフォルトのコンストラクターを呼び出すことができるため、機能している必要があります。引数の一部としてQStringsを使用していますが、 QString が含まれているので、それはあり得ません...LNK2019 errorコンストラクターが引数を取って下駄を取る理由を誰かが知っている他の理由はありますか?

車.h

#include <QString>
class car
{
public:

    car();
    car(int car_id, QString something, QString something_else, QString something3, int an_int, int another_int, int another_int_i, QString something4);
};

車.cpp

car::car()
{
}

car::car(int car_id, QString something, QString something_else, QString something3, int an_int, int another_int, int another_int_i, QString something4)
{
}

明らかに、コンテキストや値などを削除したばかりですが、構造に違いはありません

データベースコントローラー.cpp

#include "DatabaseController.h"
#include "car.h"
void DatabaseController::DoSomething()
{
    car *pcar = new car(0, "", "", "", 0, 0, 0, "");
}

インターフェイス.cpp

#include "DatabaseController.h"
void interface::on_btn_clicked()
{
    DatabaseController DC;
    DC.DoSomething();
}

完全なエラー:

DatabaseController.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall car::car(int,class QString,class QString,class QString,int,int,int,class QString)" (??0car@@QAE@HVQString@@00HHH0@Z) referenced in function "public: void __thiscall DatabaseController::getAll(class QString)" (?getAll@DatabaseController@@QAEXVQString@@@Z)
4

3 に答える 3

11

私はこれが本当に遅い応答であることを知っていますが、私は同じ問題で長い間苦労しました.

clean->rebuild を実行すると、QT は常に c++ ファイルを正しく解析するとは限りません。幸いなことに、強制的にビルド ファイルを手動で削除するだけで、最初から実行できます。

それは私のために働いたし、それが何人かの人々に役立つことを願っています!

于 2014-11-27T17:10:02.453 に答える
2

プロジェクトを再構築しようとしましたか? 状況によっては、これにより、説明したようなリンクエラーが実際に発生する可能性があります。

わかりました、プロジェクトにあるのと同じコードをコピーして貼り付けていただけますか? :)

car *car = new car(0, "", "", "", 0, 0, 0, "");

ここでは、たとえば「車」のインスタンスに同じ名前を付けることはできません。次のような別の識別子を使用する必要があります。

car *pCar = new car(0, "", "", "", 0, 0, 0, "");
于 2013-04-12T11:31:36.507 に答える