Question

Je suis en train de faire un autre exercice du livre de Deitel. Le programme calcule l'intérêt mensuel et imprime les nouveaux équilibres pour chacun des épargnants. Comme l'exercice fait partie du chapitre relatif à la mémoire dynamique, je suis en utilisant les opérateurs « nouveaux » et « supprimer ». Pour une raison quelconque, je reçois ces deux erreurs:

  

LNK2019: symbole externe non résolu WinMain @ 16 référencé dans la fonction ___ tmainCRTStartup

     

LNK1120 d'erreur fatale: 1 externes non résolus

est le fichier d'en-tête de la 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;
};
  

fichier Cpp avec des définitions de fonctions de membre

//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 finalement programme pilote:

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

J'ai passé une heure à essayer de comprendre cela sans succès.

Était-ce utile?

La solution

Allez dans "Paramètres Linker -> Système". Modifiez le champ "sous-système" de "Windows" à "Console".

Autres conseils

Il semble que vous écrivez une application standard de la console (vous avez int main()), mais que l'éditeur de liens s'attend à trouver un point d'entrée de fenêtres WinMain.

Dans les pages de propriétés du projet yout, dans la section Linker, l'option System / SubSystem, avez-vous "Windows (/ SUBSYSTEM: WINDOWS)" sélectionné? Si oui, essayez de le changer à "Console (/ SUBSYSTEM: CONSOLE)"

Lors de la création d'un nouveau projet, sélectionnez "Console Win32 Application" au lieu de "Projet Win32".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top