Witam!
Mam oto taki skromny program używający klas. Problem w tym, że przy kazdym odwołaniu do klasy w funkcji main(), kompilator pokazuje taki oto błąd: "undefined reference to `BankAcc::BankAcc(std::string const&, std::string const&, double)'" i tak przy każdym wywołaniu metody.
Header:
#include<string>
using namespace std;
class BankAcc
{
private:
string imienazwisko;
string accnumber;
double accbalance;
public:
BankAcc();
BankAcc(const string & person, const string & number, double amount = 0.0);
~BankAcc();
void deposit(double amount);
void withdraw(double amount);
void show() const;
};
Definicje:
#include <iostream>
#include "naglowek.h"
#include <string>
using namespace std;
BankAcc::BankAcc()
{
imienazwisko = "brak danych posiadacza rachunku";
accnumber = "brak danych posiadacza rachunku";
accbalance = 0.0;
}
BankAcc::BankAcc(const string & person, const string & number, double amount)
{
imienazwisko = person;
accnumber = number;
if(amount < 0)
{
cout << "Wprowadzony bilans konta jest ujemny!" << endl;
cout << "Ustawiam saldo konta z rachunkiem: " << number << "na 0.";
accbalance = 0.0;
}
else
accbalance = amount;
}
BankAcc::~BankAcc()
{
}
void BankAcc::deposit(double amount)
{
accbalance += amount;
}
void BankAcc::withdraw(double amount)
{
if(amount > accbalance)
{
cout << "Kwota wyplaty jest wieksza od posiadanej na koncie!" << endl;
cout << "Transakcja przerwana.";
}
else
{
accbalance -= amount;
}
}
void BankAcc::show() const
{
using std::ios_base;
ios_base::fmtflags orig = cout.setf(ios_base::fixed, ios_base::floatfield);
stdd:streamsize prec = cout.precision(3);
cout << "Imie i nazwisko posiadacza rachunku: " << imienazwisko << endl;
cout << "Numer rachunku: " << accnumber << endl;
cout << "Stan konta: " << accbalance << endl;
cout.setf(orig, ios_base::floatfield);
cout.precision(prec);
}
Plik z funkcją main():
#include <iostream>
#include <string>
#include "naglowek.h"
using namespace std;
int main()
{
BankAcc klient[3] = {
BankAcc("Maciej Kunacki", "7856 7121 1583 2352", 0),
BankAcc("Jan Kowalski", "0123 4567 8901 2345", 0),
BankAcc("Adam Nowak", "2398 2178 3641 1364", 1500)
};
klient[0].show();
klient[1].show();
klient[2].show();
klient[0].deposit(23000);
klient[0].show();
klient[0].withdraw(10000);
klient[0].show();
klient[2].withdraw(2000);
klient[2].show();
return 0;
}