魚額宝のerror LNK 2001:解析できない外部記号の静的データメンバーの定義

3020 ワード

C 5-1「魚額宝」
タイトルの説明
「魚額宝」クラスを実装してください.以下にコードテンプレートが示されています.main関数のクラスに対する操作に基づいて、クラス実装部分のコードを補完してください.
「魚額宝」類は口座残高を記録したり、貯金したり、お金を引き出したり、利息を計算したりすることができます.このクラスには、プライベート静的メンバー変数profitRateが「魚額宝」の金利を格納し、共有静的メンバー関数setProfitRateで金利の値を変更できます.プログラムは1日目からn日目までの連続n日間の口座操作として入力され、毎日1回しか口座操作ができないか、預金または引き出しができない.毎日発生する利息は前日の口座残高と「魚額宝」金利の積であり、発生した利息は当日も口座残高に預けられ、1日目までに口座が存在しないため、1日目は必ず口座を新築して貯金する.また、当日の利息預金残高はありません.プログラムは,n日目操作の入力を受けた後,n日目操作完了後の口座残高を算出して出力するよう要求する.コードは次のとおりです.
#include 
using namespace std;
  
class Yuebao
{
static double profitRate;
public:
    static void setProfitRate(double rate);
/* Your code here! */
};
  
int main()
{
    int n;
    while(cin >> n)
    {
        double profitRate;
        cin >> profitRate;
        Yuebao::setProfitRate(profitRate);//        
        Yuebao y(0); //       ,      0
        int operation;//           
        double amount;//        
        for (int i = 0; i < n; ++i)
        {
            y.addProfit();//            
            cin >> operation >> amount;
            if (operation == 0)
                y.deposit(amount);//    
            else
                y.withdraw(amount);//    
        }
        cout << y.getBalance() << endl;//        
    }
    return 0;
}

 
説明の入力
各測定例共n+2行
1行目に整数nを入力し、次のn日間の操作を示します.
2行目は実数を入力し、「魚額宝」の金利とし、n日間の金利は変わらない.
次にn行があり、n日の操作を表し、行ごとに2つの数があり、1番目の数または0または1、0は貯金を表し、1は引き出しを表し、2番目の実数はアクセスの金額である.
1 <= n <= 20
 
出力の説明
各測定例について、n日目の操作完了後の口座残高を出力する
 
サンプル入力
 
3
0.1
0 10
0 10
1 10

サンプル出力
13.1
#include 
using namespace std;

class Yuebao
{
	static double profitRate;
	double balance;
public:
	Yuebao(double money) {
		balance = money;
	}
	static void setProfitRate(double rate) {
		profitRate = rate;
	}
	/* Your code here! */
	void addProfit() {
		balance *= 1 + profitRate;
	}
	void deposit(double money) {
		balance += money;
	}
	void withdraw(double money) {
		balance -= money;
	}
	double getBalance() {
		return balance;
	}
};

double Yuebao::profitRate = 0;

int main()
{
	int n;
	
	while (cin >> n)
	{
		double profitRate;
		cin >> profitRate;
		Yuebao::setProfitRate(profitRate);//        
		Yuebao y(0); //       ,      0
		int operation;//           
		double amount;//        
		for (int i = 0; i < n; ++i)
		{
			y.addProfit();//            
			cin >> operation >> amount;
			if (operation == 0)
				y.deposit(amount);//    
			else
				y.withdraw(amount);//    
		}
		cout << y.getBalance() << endl;//        
	}
	return 0;
}

TIPS:
現れる
error LNK 2001:解析できない外部シンボル「private:static double Yuebao::profitRate」(?profitRate@Yuebao@@0NA)
エラーの原因は、静的データメンバーYuebao::profitRateはクラス外、主関数の前に初期化し、mainの前に追加する
double Yuebao::profitRate = 0;
できます.
 
疑問があります:while(cin>>n){}はどのように終了しましたか?