魚額宝のerror LNK 2001:解析できない外部記号の静的データメンバーの定義
3020 ワード
C 5-1「魚額宝」
タイトルの説明
「魚額宝」クラスを実装してください.以下にコードテンプレートが示されています.main関数のクラスに対する操作に基づいて、クラス実装部分のコードを補完してください.
「魚額宝」類は口座残高を記録したり、貯金したり、お金を引き出したり、利息を計算したりすることができます.このクラスには、プライベート静的メンバー変数profitRateが「魚額宝」の金利を格納し、共有静的メンバー関数setProfitRateで金利の値を変更できます.プログラムは1日目からn日目までの連続n日間の口座操作として入力され、毎日1回しか口座操作ができないか、預金または引き出しができない.毎日発生する利息は前日の口座残高と「魚額宝」金利の積であり、発生した利息は当日も口座残高に預けられ、1日目までに口座が存在しないため、1日目は必ず口座を新築して貯金する.また、当日の利息預金残高はありません.プログラムは,n日目操作の入力を受けた後,n日目操作完了後の口座残高を算出して出力するよう要求する.コードは次のとおりです.
説明の入力
各測定例共n+2行
1行目に整数nを入力し、次のn日間の操作を示します.
2行目は実数を入力し、「魚額宝」の金利とし、n日間の金利は変わらない.
次にn行があり、n日の操作を表し、行ごとに2つの数があり、1番目の数または0または1、0は貯金を表し、1は引き出しを表し、2番目の実数はアクセスの金額である.
1 <= n <= 20
出力の説明
各測定例について、n日目の操作完了後の口座残高を出力する
サンプル入力
サンプル出力
TIPS:
現れる
error LNK 2001:解析できない外部シンボル「private:static double Yuebao::profitRate」(?profitRate@Yuebao@@0NA)
エラーの原因は、静的データメンバーYuebao::profitRateはクラス外、主関数の前に初期化し、mainの前に追加する
double Yuebao::profitRate = 0;
できます.
疑問があります:while(cin>>n){}はどのように終了しましたか?
タイトルの説明
「魚額宝」クラスを実装してください.以下にコードテンプレートが示されています.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){}はどのように終了しましたか?