Привет всем, я новичок в программировании, так что извините вопрос Noob …
я пытался каждый метод, чтобы пройти с неопределенной ошибкой ссылки, но он продолжает выдавать эту ошибку на меня
я попытался использовать указатель «->» и знак «::», а также точку «.» Что мне делать? почему он не может скомпилировать?
это мой файл 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
полный проект можно скачать ВОТ для ссылки
СПАСИБО ВСЕМ ЗАРАНЕЕ!
Я думаю, что проблема в том, что метод addFront не определен для типа учетной записи (фактически любого типа). Увидеть Почему шаблоны могут быть реализованы только в заголовочном файле? для гораздо лучшего объяснения.
Перемещение содержимого cpp inline в файл .h должно помочь. Другой вариант — переименовать файл .cpp в .inl и включить его в конец файлаlinkList.hpp.
Других решений пока нет …