Domanda

Sto cercando di fare un altro esercizio dal libro di Deitel. Il programma calcola l'interesse mensile e stampa i nuovi equilibri per ciascuno dei risparmiatori. Poiché l'esercizio è parte del capitolo relativo alla memoria dinamica, sto usando "nuovi" operatori e "Cancella". Per qualche ragione, ottengo questi due errori:

  

LNK2019: simbolo esterno non risolto WinMain @ 16 fa riferimento in funzione ___ tmainCRTStartup

     

Errore irreversibile LNK1120: esterni non risolti 1

Ecco file di intestazione di 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;
};
  

file cpp con definizioni di funzioni 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
  

Fine finalmente programma del driver:

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

Ho trascorso un'ora cercando di capire questo fuori senza successo.

È stato utile?

Soluzione

Vai a "Impostazioni Linker -> Sistema". Modificare il campo "sottosistema" da "Windows" a "Console".

Altri suggerimenti

Sembra che si sta scrivendo un'applicazione console standard (avete int main()), ma che il linker si aspetta di trovare un punto di ingresso WinMain finestre.

In pagine di proprietà del progetto yout, nella sezione Linker, l'opzione System / sottosistema, avete "Windows (/ SUBSYSTEM: WINDOWS)" selezionato? In tal caso, provare a cambiare in "Console (/ SUBSYSTEM: CONSOLE)"

Quando si crea un nuovo progetto, selezionare "applicazione console Win32" invece di "Progetto Win32".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top