Sperando che il titolo sia attinente vi spiego il mio problema: ho questi 2 files:
ACCOUNT.H
***************************
class Account{
public:
Account(int);
void credit (int);
void debit (int);
int getBalance();
private:
int saldo;
};
****************************
ACCOUNT.CPP
*****************************
#include <iostream>
using std::cout;
using std::endl;
#include "Account.h"
Account::Account(int i){
if(i<0){
i=0;
saldo = i;
cout<<"L'importo inserito e' un numero negativo..Ho impostato il saldo iniziale a 0"<<endl;
}
if(i>=0) saldo = i;
}
void Account::credit(int i){
saldo += i;
}
void Account::debit(int i){
if ((saldo - i)<0){
cout<<"Stai cercando di prelevare più di quanto hai nel conto! Operzione annullata."<<endl;
}
if ((saldo - i)>=0) saldo -= i;
}
int Account::getBalance(){
return saldo;
}
*********************************
ora lo compilo da terminale usando l'istruzione g++ -c Account.cpp
e mi crea un file Account.o che sarebbe il binario della libreria:
posso dire allora di aver creato la mia prima "libreria" fino a qui ci siamo...ora per testare la libreria costruisco un file .cpp che testi il funzionamento ed eccolo:
provaAccount.cpp:
*************************************
#include <iostream>
using std::cout;
using std::endl;
#include "Account.h"
int main(){
Account account1(20);
account1.credit(10);
cout<<"Ho aggiunto 10 unita'"<<endl;
cout<<account1.getBalance();
cout<<"Ora tolgo 10 unita'"<<endl;
account1.debit(10);
cout<<account1.getBalance();
return 0;
}
*************************************
ora, dovrei poter compilare il programma con il comando:
g++ provaAccount.cpp -o provaact
ma ecco l'errore che mi da il terminale:
shark:~ sharkufc$ g++ provaAccount.cpp -o provaAcct
/usr/bin/ld: Undefined symbols:
Account::getBalance()
Account::debit(int)
Account::credit(int)
Account::Account(int)
collect2: ld returned 1 exit status
in cosa ho sbagliato???