2013-05-08 16 views
5

intestazione:dichiarazione non è compatibile con il tipo di file

#ifndef H_bankAccount; 
#define H_bankAccount; 


class bankAccount 
{ 
public: 
    string getAcctOwnersName() const; 
    int getAcctNum() const; 
    double getBalance() const; 
    virtual void print() const; 

    void setAcctOwnersName(string); 
    void setAcctNum(int); 
    void setBalance(double); 

    virtual void deposit(double)=0; 
    virtual void withdraw(double)=0; 
    virtual void getMonthlyStatement()=0; 
    virtual void writeCheck() = 0; 
private: 
    string acctOwnersName; 
    int acctNum; 
    double acctBalance; 
}; 
#endif 

di file cpp:

#include "bankAccount.h" 
#include <string> 
#include <iostream> 
using std::string; 


string bankAccount::getAcctOwnersName() const 
{ 
    return acctOwnersName; 
} 
int bankAccount::getAcctNum() const 
{ 
    return acctNum; 
} 
double bankAccount::getBalance() const 
{ 
    return acctBalance; 
} 
void bankAccount::setAcctOwnersName(string name) 
{ 
    acctOwnersName=name; 
} 
void bankAccount::setAcctNum(int num) 
{ 
    acctNum=num; 
} 
void bankAccount::setBalance(double b) 
{ 
    acctBalance=b; 
} 
void bankAccount::print() const 
{ 
    std::cout << "Name on Account: " << getAcctOwnersName() << std::endl; 
    std::cout << "Account Id: " << getAcctNum() << std::endl; 
    std::cout << "Balance: " << getBalance() << std::endl; 
} 

Please help ottengo un errore sotto getAcctOwnersName, e setAcctOwnersName affermando che la dichiarazione è incompatibile con "< degli errori digita> bankAccount :: getAcctOwnersName() const ".

+1

Come presentato, il codice non deve essere compilato, poiché il file di intestazione non include ''. Penso che il problema potrebbe essere l'intestazione che ha un significato diverso di 'stringa' rispetto a' std :: string'. Prova a inserire '#include ' nell'intestazione e usa 'std :: string' anziché semplice' stringa' lì. Vedi se questo aiuta. – Angew

+2

A meno che non si tratti del * primo * errore visualizzato dal compilatore, probabilmente è meglio ignorarlo. Lavora sempre attraverso l'elenco degli errori da cima a fondo; non iniziare dall'ultima stampa, anche se è quella che è più facile da trovare nell'output. Spesso, un errore all'inizio di un programma può causare una cascata di errori in seguito, e non fa bene cercare di correggere quelli successivi senza rivolgersi a quello che li ha innescati tutti in primo luogo. –

risposta

14

È necessario

#include <string> 

nel file di intestazione bankAccount, e si riferiscono alle corde come std::string.

#ifndef H_bankAccount; 
#define H_bankAccount; 

#include <string> 

class bankAccount 
{ 
public: 
    std::string getAcctOwnersName() const; 

    .... 

una volta incluso nell'intestazione, non è più necessario includerlo nel file di implementazione.

+0

Ok ho aggiunto std :: string al mio codice file di intestazione prima dei tipi di stringhe e non ha cambiato nulla –

+2

Ok, non importa grazie mille funziona ora –

Problemi correlati