Pergunta

Eu estou tentando fazer um outro exercício do livro de Deitel. O programa calcula os juros mensais e imprime os novos saldos para cada um dos poupadores. Como o exercício é parte do capítulo relacionado à dinâmica de memória, eu estou usando "novos" e operadores "delete". Por alguma razão, eu recebo esses dois erros:

LNK2019: não resolvidos símbolo WinMain externa @ 16 referenciado na função ___ tmainCRTStartup

fatal LNK1120 de erro: 1 resolvidos externos

Aqui está arquivo de cabeçalho classe.

//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 com definições de funções membro

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

End finalmente programa de motorista:

#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;
}

Eu passei uma hora tentando descobrir isso sem sucesso.

Foi útil?

Solução

Vá para "configurações Linker -> System". Altere o campo "Subsistema" do "Windows" para "Console".

Outras dicas

Parece que você está escrevendo um aplicativo de console padrão (você tem int main()), mas que o vinculador está esperando para encontrar um WinMain janelas ponto de entrada.

Em páginas de propriedades do projeto yout, na seção Linker, opção de sistema / subsistema, você tem "Windows (/ SUBSYSTEM: WINDOWS)" selecionada? Se assim for, tente alterá-lo para "Console (/ SUBSYSTEM: CONSOLE)"

Ao criar um novo projeto, selecione "Aplicação de consola Win32" em vez de "Projeto Win32".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top