我在编译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 reference to SavingsAccount :: annualInterestRate'
这个问题并没有要求构建一个构造函数,但我做了一个,假设我需要初始化余额值,但我有点感觉是导致问题和错误信息的原因。我对吗? ......还是错的?
先谢谢你。
答案 0 :(得分:2)
您需要在某处定义annualInterestRate
变量,其中包含:
float SavingsAccount::annualInterestRate;
静态变量就像全局变量;他们有单独的声明和定义。