未定义的引用`SavingsAccount :: annualInterestRate'

问题描述 投票:0回答:1

我在编译C ++编码时偶然发现了这个错误。这是我的代码:

#include<iostream>
#include<iomanip>

using namespace std;

class SavingsAccount
{
private:
    static float annualInterestRate;
    float savingBalance;

public:
    float calculateMonthlyInterest()
        {return savingBalance+=(savingBalance*annualInterestRate)/12;}//adding the interest to savingBalance

    static void modifyInterestRate(float r)
    {annualInterestRate=r;}//modify the annualInterestRate

    SavingsAccount(float saving)//constructor with argument to set savingValue
    {savingBalance=saving;}

};


int main()
{
SavingsAccount saver1(2000.00), saver2(3000.00);//instantiate 2 different SavingsAccount object

SavingsAccount::modifyInterestRate(0.03);//set new interest to 3%
//printing savers' new balance after 3% interest applied
cout<<"THIS MONTH (3% INTEREST) :\n";
cout<<fixed<<setprecision(2)<<"Saver 1 balance : RM "<<saver1.calculateMonthlyInterest();
cout<<"\nSaver 2 balance : RM "<<saver2.calculateMonthlyInterest();

SavingsAccount::modifyInterestRate(0.04);//set new interest to 4%
//printing savers' new balance after 4% interest applied
cout<<"\n\nNEXT MONTH (4% INTEREST) :\n";
cout<<"Saver 1 balance : RM "<<saver1.calculateMonthlyInterest();
cout<<"\nSaver 2 balance : RM "<<saver2.calculateMonthlyInterest();

return 0;

}

完整的错误消息:C:\ Users \ NURULA~1 \ AppData \ Local \ Temp \ ccOIgGs2.o class exercise 3 no 1 ver 2.cpp :(。rdata $ .refptr._ZN14SavingsAccount18annualInterestRateE [.refptr._ZN14SavingsAccount18annualInterestRateE] + 0x0) :undefined引用`SavingsAccount :: annualInterestRate'

这张照片是我想要做的问题的快照:the question

问题并没有要求构建一个构造函数,但我做了一个,假设我需要初始化余额值,但我有点感觉是导致问题和错误信息的原因。我对吗? ......还是错的?

先谢谢你。

c++ class static-members
1个回答
3
投票

您需要在某处定义annualInterestRate变量,其中:

float SavingsAccount::annualInterestRate;

静态变量就像全局变量;他们有单独的声明和定义。

© www.soinside.com 2019 - 2024. All rights reserved.