8

オブジェクトを作成しようとすると、Visual Studio で LNK2001 エラーが発生します。コンストラクターを変更するとエラーが変わるため、コンストラクターに問題があると思います。

Customer bob("Bob", "25 Bob Lane", "01bob82", "M", "bob/bob/bob");

この行は次のエラーを返します:

Error   1   error LNK2001: unresolved external symbol "public: __thiscall
Customer::Customer(class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class 
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >)" (??0Customer@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?
$allocator@D@2@@std@@0000@Z)    D:\Dropbox\Work\C++\C++ Assignment\C++ 
Assignment\driver.obj

コンストラクターを含む Customer クラス:

#pragma once
#include "l_list.h"
#include "Account.h"
#include <string>

using namespace std;

class Customer
{
private:
    l_list<Account> accounts;
    string name;
    string address;
    string telNo;
    string sex;
    string dob;

public:
    Customer(string name, string address, string telNo, string sex, string dob)
    {
        Customer::name = name;
        Customer::address = address;
        Customer::telNo = telNo;
        Customer::sex = sex;
        Customer::dob = dob;
    }

    void createAccount()
    {
        cout << "What type of account?";

    }

};
4

4 に答える 4

9

リンクエラーがある場合は、構文的にコードに問題はありません。そうでない場合は、コンパイラエラーが発生します。

チェック(または追加)する必要があるのは、Customerクラスを使用するプロジェクトのDependenciesプロパティのパスです。VSでは、「プロジェクトのプロパティ->構成のプロパティ->リンカー->入力->追加の依存関係」を見つけることができます。リンカがCustomer実装の外部ライブラリを見つけることができないようです。すべての#includeが正しいため、プロジェクトを正常にコンパイルできますが、依存関係のためにリンクの段階で失敗します。

于 2012-11-30T01:22:27.673 に答える
2

私には何が問題ないように見えます。名前空間が正しいこと、または別の/競合する「顧客」定義がないことなど、他のことを確認してください。コードの大きなセクションをコメントアウトするか、コードを小さなテストケースに減らしてみてください。

于 2012-11-29T20:42:42.070 に答える
1

同じエラーが発生しました。必要な機能が一つコメントアウトされていることが判明しました。この関数のコメントを外すと、エラーは消えました。

于 2015-12-23T08:55:55.243 に答える