添字演算子を実装したいのですが, 間違えているところを教えて頂きたいです.
int main()以下は書き換えずに出力が4 4 4 4 4と5行出るようにクラスを完成させるという練習で,自分で書いたのはpublicからクラスの終わりの};までです!
できればその中だけを書き換えたいです.よろしくお願いします.
下記のコードは実行してみたところtoo many errors emitted と出てしまいました...
c++
1#include <iostream> 2#include <string> 3 4using namespace std; 5 6class Dict{ 7 double x[4]; 8public: 9 // 添字演算子を実装せよ.ただし,引数が, 10 // "apple" ならば,x[0], 11 // "orange" ならば x[1], 12 // "beef" ならば x[2], 13 // 上記以外ならば x[3], 14 // の参照を返すようにすること. 15 16 Dict(double& a[string t]) 17 { 18 (*this).a["apple"] = a.["apple"]; 19 (*this).a["orange"] = a.["orange"]; 20 (*this).a["beef"] = a.["beef"]; 21 22 if(t=="apple") return x[0]; 23 if(t=="orange") return x[1]; 24 if(t=="beef") return x[2]; 25 else return x[3]; 26 } 27 28 ~Dict(){ 29 delete[] x[4]; 30 } 31 32 int const &operator[](int index) const{ 33 return x[index]; 34 } 35 int &operator[](int index){ 36 return x[index]; 37 } 38 39 40}; 41 42// 以下が正しい出力である. 43 44// 4 45// 4 46// 4 47// 4 48// 4 49 50int main(){ 51 Dict d; 52 53 d["apple"] = 1; 54 d["orange"] = 2; 55 d["beef"] = 3; 56 d["human"] = 4; 57 for(int i=0;i<10000;++i){ 58 // 拡散方程式.画像をぼかす処理などに使われる.全ての変数の値が適用するたびに徐々に均一になっていく. 59 d["apple"] = d["apple"] + (d["dog"] - 2*d["apple"] + d["orange"])*0.01; 60 d["orange"] = d["orange"] + (d["apple"] - 2*d["orange"] + d["beef"])*0.01; 61 d["beef"] = d["beef"] + (d["orange"] - 2*d["beef"] + d["dog"])*0.01; 62 } 63 cout << d["apple"] << "\n"; 64 cout << d["beef"] << "\n"; 65 cout << d["orange"] << "\n"; 66 cout << d["egg"] << "\n"; 67 cout << d["mikan"] << "\n"; 68 return 0; 69}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/09 08:08