-1

こんにちは、プログラミングに慣れていないので、初心者の質問を許してください...未定義の参照エラーを処理するためにすべての方法を試しましたが、そのエラーがスローされ続けますポインター「->」と「::」記号を使用してみましたまた、ドット「。」私はどうしたらいいですか?なぜコンパイルできないのですか?

これは私のcppファイルです:

#include <cstdlib>
#include "account.hpp"

using namespace std;

int Account::getAccountNumber()
    {
        return accountNumber;
    }
double Account::getBalance()
    {
        return balance;
    }
void Account::createAccount(LinkedList<Account>& accountsList, string name, int idNumber)
{
...
    case 1:
       accountsList.addFront(newAcc); //Where the error occurs.
        break;
    case 2:
        do
        {
            cout << "\n\tWhich position would you like to insert the\n"
                 << "\tnew account into?\n"
                 << "\tPosition number: #";
            cin >> target;
            if (cin.fail())
            {
                cin.clear();
                cin.ignore(20,'\n');
                cout << "\n\n\tSorry, wrong input. Please enter a correct position.\n\n";
                system("pause");
            }
        }
        while(cin.fail());
        accountsList.addMiddle(newAcc, target); //and here
        break;
    case 3:
        accountsList.addEnd(newAcc); //and here
        break;
    }
    cout << "\n\n\tAccount Created Successfully\n\n"
         << accountsList; 
    system("pause");
}

ここに私の.hppがあります

#ifndef ACCOUNT_HPP_INCLUDED
#define ACCOUNT_HPP_INCLUDED
#include "linkedlist.hpp"
#include "generic.hpp"

class Account : public GenericAccount
{
    int accountNumber;
    double balance;
public:
    Account(string name = "empty", int idNumber = 0, int accountNumber = 0, double balance = 0)
        :  GenericAccount(name, idNumber), accountNumber(accountNumber), balance(balance) {}
    int getAccountNumber();
    double getBalance();
    void createAccount(LinkedList<Account>&, string, int);
    void deposit(LinkedList<Account>&, Account&);
    void withdraw(LinkedList<Account>&, Account&);
    void displayAccount(LinkedList<Account>&, Account&);
    void deleteAccount(LinkedList<Account>&);

    friend istream& operator>> (istream& is, Account& x)
    {
        is >> x.accountNumber;
        return is;
    }

    friend ostream& operator << (ostream& os, Account& c)
    {
        os << "Account Number= " << c.getAccountNumber() << "\t"
           << "Balance= "<< c.getBalance() << endl;
        return os;
    }

    friend bool operator == (Account& a, Account& target)
    {
        return (a.getAccountNumber() == target.getAccountNumber());
    }

};


#endif // ACCOUNT_HPP_INCLUDED

完全なプロジェクトは、参照用にここからダウンロードできます。事前に感謝します。

4

1 に答える 1

0

問題は、addFront メソッドがアカウントの種類 (実際には任意の種類) に対して定義されていないことだと思います。テンプレートをヘッダー ファイルにしか実装できないのはなぜですか? を参照してください。より良い説明のために。

cpp の内容を .h ファイルにインラインで移動するとうまくいくはずです。別のオプションは、.cpp ファイルの名前を .inl に変更し、それを linkedList.hpp の下部に含めることです。

于 2013-08-24T17:34:59.927 に答える