2012-08-29 12 views
5

Ho guardato e so che ci sono altre risposte là fuori ma nessuno di loro sembra darmi quello che sto cercando quindi per favore non segnalarlo come un" repost "simbolo esterno non risolto "public: __thiscall

sto diventando il simbolo esterno non risolto.: errore "pubblico __thiscall" nel mio codice C++ e sto a calci fuori dalla finestra e appena fallire la mia classe C++ Please help me !!!!

mio conto corrente file di intestazione

#include "BankAccount.h" 
class CheckingAccount 
{ 
private: 
int numOfWithdrawls; 
double serviceFee; 
int AccountBal; 

public: 
bool withdraw (double wAmmt); 
BankAccount CA; 
CheckingAccount(); 
CheckingAccount(int accountNum); 
}; 

e presentare la sua CPP

#include <iostream> 
using namespace std; 
#include "CheckingAccount.h" 

CheckingAccount::CheckingAccount() 
{ 
CA; 
numOfWithdrawls = 0; 
serviceFee = .50; 
} 
CheckingAccount::CheckingAccount(int accountNum) 
{ 
CA.setAcctNum (accountNum); 
numOfWithdrawls = 0; 
serviceFee = .50; 
} 
bool CheckingAccount::withdraw (double wAmmt) 
{ 
numOfWithdrawls++; 
if (numOfWithdrawls < 3) 
{ 
    CA.withdraw(wAmmt); 
} 
else 
{ 
    if (CA.getAcctBal() + .50 <=0) 
    { 
     return 0; 
    } 
    else 
    { 
     CA.withdraw(wAmmt + .50); 
     return 1; 
    } 
} 
} 

mio file di intestazione BankAccount

#ifndef BankAccount_h 
#define BankAccount_h 
class BankAccount 
{ 
private: 
int acctNum; 
double acctBal; 

public: 
BankAccount(); 
BankAccount(int AccountNumber); 
bool setAcctNum(int aNum); 
int getAcctNum(); 
double getAcctBal(); 
bool deposit(double dAmmt); 
bool withdraw(double wAmmt); 
}; 
#endif 

mio BankAccount CPP il file

#include <iostream> 
using namespace std; 
#include "BankAccount.h" 

BankAccount::BankAccount(int AccoutNumber) 
{ 
acctNum = 00000; 
acctBal = 100.00; 
} 
bool BankAccount::setAcctNum(int aNum) 
{ 
acctNum = aNum; 
return true; 
} 

int BankAccount::getAcctNum() 
{ 
return acctNum; 
} 

double BankAccount::getAcctBal() 
{ 
return acctBal; 
} 

bool BankAccount::deposit(double dAmmt) 
{ 
acctBal += dAmmt; 
return true; 
} 

bool BankAccount::withdraw(double wAmmt) 
{ 
if (acctBal - wAmmt <0) 
{ 
    return 0; 
} 
else 
{ 
    acctBal -= wAmmt; 
    return 1; 
} 
} 

mio errore:

1>BankAccountMain.obj : error LNK2019: unresolved external symbol "public: __thiscall BankAccount::BankAccount(void)" ([email protected]@[email protected]) referenced in function "public: __thiscall SavingsAccount::SavingsAccount(void)" ([email protected]@[email protected]) 

1>CheckingAccount.obj : error LNK2001: unresolved external symbol "public: __thiscall BankAccount::BankAccount(void)" ([email protected]@[email protected]) 
+0

Quando vedi questo tipo di errori, assicurati di non dimenticare di collegarti a un file LIB. A volte aggiungere le intestazioni non è sufficiente, anche per le cose WinAPI. –

risposta

18

"__thiscall" è rumore. Continuare a leggere. I messaggi di errore si lamentano di BankAccount::BankAccount(void). Il file di intestazione dice che BankAccount ha un costruttore predefinito, ma non esiste una definizione per questo.

+0

@ MattWestlake - Conosco la sensazione. Ci sono molte informazioni in quei messaggi di errore, ma sono piuttosto densi. –

+0

Perché MS Studio è così criptico nei suoi messaggi di errore? Perché il rumore inutile? –

+1

@ JavierQuevedo-Fernández - perché in un contesto diverso, il "rumore" potrebbe importare. C'è solo così tanto che un compilatore può fare per generare messaggi di errore significativi. Parte di diventare un buon programmatore sta imparando a capire i messaggi di errore. –

4

Nella classe BankAccount si dichiara un costruttore che non accetta argomenti

BankAccount(); 

ma non lo si implementa. Questo è il motivo per cui il linker non riesce a trovarlo. Fornisci un'implementazione per questo costruttore nel tuo file .cpp e la fase di collegamento dovrebbe funzionare.

+0

Ho guardato il codice troppo a lungo ... ugh –

+0

@MattWestlake Succede a tutti. In generale, gli errori del linker di solito indicano che hai dimenticato di implementare una funzione o che non sei riuscito a collegarti alla libreria corretta. Queste sono di solito le prime cose da cercare. – mathematician1975

Problemi correlati