Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    c++ header, compilatore ed errori

    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???

  2. #2
    quando vedi scritto 'ld' significa che il problema è il linker.
    infatti anche se hai fatto la libreria col comando
    "g++ provaAccount.cpp -o provaAcct" non dici al linker che deve
    linkarla.

    prova con "g++ -o provaAcct provaAccount.cpp Account.o" e sarai più fortunato !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.