Frage

Ich versuche, eine andere Übung von Deitel Buch zu tun. Das Programm berechnet die monatlichen Zinsen und druckt die neuen Salden für jede der Sparer. Da die Übung Teil des Kapitels im Zusammenhang mit dynamischen Speichern, ich bin mit „neuen“ und Operatoren „löschen“. Aus irgendeinem Grund bekomme ich diese zwei Fehler:

  

LNK2019: nicht aufgelöstes externes Symbol WinMain @ 16 in Funktion verwiesen ___ tmainCRTStartup

     

schwerwiegender Fehler LNK1120: 1 nicht aufgelöste externe

Hier ist Klassenheaderdatei.

//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-Datei mit den Mitgliedsfunktionsdefinitionen

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

Ende schließlich Treiberprogramm:

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

Ich habe eine Stunde lang versucht, dies ohne Erfolg zu verstehen.

War es hilfreich?

Lösung

Gehen Sie auf "Linkers Einstellungen -> System". Ändern Sie das Feld "Subsystem" von "Windows" auf "Console".

Andere Tipps

Es sieht aus wie Sie eine Standard-Konsole Anwendung schreiben (Sie haben int main()), aber dass der Linker erwartet ein Fenster Einstiegspunkt WinMain zu finden.

In yout Projekteigenschaftsseite, im Linker Abschnitt, System / SubSystem Option, haben Sie "Windows (/ SUBSYSTEM: WINDOWS)" ausgewählt? Wenn ja, versuchen Ändern Sie ihn auf "Console (/ SUBSYSTEM: CONSOLE)"

Wenn Sie ein neues Projekt zu erstellen, wählen Sie „Win32-Konsolenanwendung“ anstelle von „Win32-Projekt“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top