2009-08-09 19 views
5

Estoy tratando de hacer otro ejercicio del libro de Deitel. El programa calcula el interés mensual e imprime las nuevas balanzas para cada uno de los ahorradores. Como el ejercicio es parte del capítulo relacionado con la memoria dinámica, estoy usando operadores "nuevos" y "eliminar". Por alguna razón, me sale estos dos errores:C++ LNK1120 y LNK2019 errores: "símbolo externo no resuelto WinMain @ 16"

LNK2019: símbolo externo sin resolver WinMain @ 16 hace referencia en ___tmainCRTStartup función

fatal LNK1120 de error: 1 de externos sin resolver

Aquí está el archivo de cabecera de clase .

//SavingsAccount.h 
//Header file for class SavingsAccount 

class SavingsAccount 
{ 
public: 
    static double annualInterestRate; 

    SavingsAccount(double amount=0);//default constructor intialize 
             //to 0 if no argument 

    double getBalance() const;//returns pointer to current balance 
    double calculateMonthlyInterest(); 
    static void modifyInterestRate(double interestRate): 

    ~SavingsAccount();//destructor 

private: 
    double *savingsBalance; 
}; 

cpp con la función de miembro de definiciones

//SavingsAccount class defintion 
#include "SavingsAccount.h" 

double SavingsAccount::annualInterestRate=0;//define and intialize static data 
             //member at file scope 


SavingsAccount::SavingsAccount(double amount) 
:savingsBalance(new double(amount))//intialize savingsBalance to point to new object 
{//empty body 
}//end of constructor 

double SavingsAccount::getBalance()const 
{ 
    return *savingsBalance; 
} 

double SavingsAccount::calculateMonthlyInterest() 
{ 
    double monthlyInterest=((*savingsBalance)*annualInterestRate)/12; 

    *savingsBalance=*savingsBalance+monthlyInterest; 

    return monthlyInterest; 
} 

void SavingsAccount::modifyInterestRate(double interestRate) 
{ 
    annualInterestRate=interestRate; 
} 

SavingsAccount::~SavingsAccount() 
{ 
    delete savingsBalance; 
}//end of destructor 

Fin finalmente programa controlador:

#include <iostream> 
#include "SavingsAccount.h" 

using namespace std; 

int main() 
{ 
SavingsAccount saver1(2000.0); 
SavingsAccount saver2(3000.0); 

SavingsAccount::modifyInterestRate(0.03);//set interest rate to 3% 

cout<<"Saver1 monthly interest: "<<saver1.calculateMonthlyInterest()<<endl; 
cout<<"Saver2 monthly interest: "<<saver2.calculateMonthlyInterest()<<endl; 

cout<<"Saver1 balance: "<<saver2.getBalance()<<endl; 
cout<<"Saver1 balance: "<<saver2.getBalance()<<endl; 

return 0; 
} 

He pasado una hora tratando de resolver esto con sin éxito.

Respuesta

7

Ir a "Ajustes del vinculador -> Sistema". Cambie el campo "Subsistema" de "Windows" a "Consola".

+0

Eso fue todo. ¡¡¡Gracias!!! – Mike55

2

Al crear un nuevo proyecto, seleccione "Aplicación de consola Win32" en lugar de "Proyecto Win32".

3

Parece que está escribiendo una aplicación de consola estándar (tiene int main()), pero que el vinculador espera encontrar un punto de entrada de Windows WinMain.

En las páginas de propiedades de su proyecto, en la sección Enlazador, opción Sistema/SubSistema, ¿tiene "Windows (/ SUBSYSTEM: WINDOWS)" seleccionado? Si es así, intente cambiarlo a "Consola (/ SUBSISTEMA: CONSOLA)"

Cuestiones relacionadas