سؤال

أحاول القيام بممارسة آخر من كتاب ديتيل. يقوم البرنامج بحساب الفائدة الشهرية ويطبع الأرصدة الجديدة لكل من المدخرين. نظرا لأن التمرين جزء من الفصل المتعلق بالذاكرة الديناميكية، فأنا أستخدم مشغلي "جديد" و "حذف". لسبب ما، أحصل على هذين الأخطاء:

LNK2019: رمز خارجي لم يتم حلها وينمين @ 16 المشار إليها في الوظيفة ___tmaincrtstartup

خطأ فادح LNK1120: 1 غير محروق

هنا هو ملف رأس الفصل الدراسي.

//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 مع تعريفات وظيفة الأعضاء

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

نهاية البرنامج في النهاية برنامج التشغيل:

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

لقد قضيت ساعة في محاولة لمعرفة ذلك دون نجاح.

هل كانت مفيدة؟

المحلول

انتقل إلى "إعدادات رابط -> النظام". تغيير الحقل "النظام الفرعي" من "Windows" إلى "وحدة التحكم".

نصائح أخرى

يبدو أنك تكتب تطبيق وحدة التحكم القياسية (لديك int main())، ولكن أن الرابط يتوقع العثور على نقطة إدخال ويندوز WinMain.

في صفحات الممتلكات في مشروع Yout، في قسم الرابط، خيار النظام / النظام الفرعي، هل لديك "نظام Windows (/ النظام الفرعي: Windows)" المحدد؟ إذا كان الأمر كذلك، فحاول تغييرها إلى "وحدة التحكم (/ النظام الفرعي: وحدة التحكم)"

عند إنشاء مشروع جديد، حدد "تطبيق وحدة التحكم Win32" بدلا من "مشروع Win32".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top