前提・実現したいこと
言語はc++です。
学校での課題で、自動販売機のシュミレートをする内容です。
1つ目のコードはあらかじめ出されたもので、このコードをもとに2つ目のコードを記入し、動かしてみようという内容でした。
やりたいこととしては、釣り銭が各種1枚ずつしか入っていない状態を(VendingMachine1クラスのコンストラクターを使って)初期状態になるようにしたいです。
実践したことに詳しく書きますが、私の行った方法が何かが足りないのか、それとも根本的にやり方が違うのかもわかりません。
発生している問題・エラーメッセージ
VendingMachine1.obj : error LNK2005: "public: __thiscall VendingMachine1::VendingMachine1(void)" (??0VendingMachine1@@QAE@XZ) は既に kadai3.obj で定義されています。 kadai3.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
c++
1#include<iostream> 2#include<vector> 3#include<string> 4#include<utility> 5#include<map> 6#ifndef PE2_VM1 7#define PE2_VM1 8using namespace std; 9class VendingMachine1 { 10private: 11 vector<string> goodsNames; // 販売品名称 (現バージョンでは固定) 12 vector<int> prices; // 価格 (現バージョンでは固定) 13 int numGoods; // 販売品数(何種類の販売品か)(現バージョンでは固定) 14 int payed; // 投入額の保存用(釣り銭計算のため) 15 map<int,int> coins; // 保持しているコインの種類と数(数は設定可能) 16 void calc(int sel); // 販売品番号を受け取り prices とpayed からおつりとして出すコインを計算し表示する。 17public: 18 VendingMachine1(); // コンストラクタ 19 VendingMachine1(int numOfCoin1, int numOfCoin2, int numOfCoin3, int numOfCoin4); 20 // コイン残数を設定 1:500Yen 2:100Yen 3:50Yen 4:10Yen 21 VendingMachine1(int numOfCoins[4]); 22 // コイン残数を設定 [0]:500Yen [1]:100Yen [2]:50Yen [3]:10Yen 23 void showPrices(); // 販売品と価格を表示する 24 void setPayed(int val); // 投入額を val として渡し payedに設定する 25 int selectGoods(); // 販売品の選択するように表示し,販売品の番号を受け取って返す。calcを呼び出しおつりの計算をして表示する。 26 void showCoins(); // チェック用,コインの残数を表示する。 27}; 28 29#endif
該当のソースコード
c++
1#include <iostream> 2#include "VendingMachine1.hpp" 3using namespace std; 4int insertCoins(); 5VendingMachine1::VendingMachine1(){ 6 int numOfCoin1, numOfCoin2, numOfCoin3, numOfCoin4 = 1; 7} 8int main(){ 9 VendingMachine1 vd1; 10 vd1.showPrices(); 11 vd1.setPayed(insertCoins()); 12 cout << vd1.selectGoods() << "\n"; 13 return 0; 14} 15int insertCoins(){ 16 int val; 17 cout << "お金を投入:"; 18 cin >> val; 19 return val; 20}
試したこと
1番目のコードで
VendingMachine1(int numOfCoin1, int numOfCoin2, int numOfCoin3, int numOfCoin4);
に書かれている値の初期値を1にしたいため、
2番目のソースコードで、
VendingMachine1::VendingMachine1(){
int numOfCoin1, numOfCoin2, numOfCoin3, numOfCoin4 = 1;
}
と記入し、初期値を設定しようとしました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
>> 5~7行目の方法で初期値を設定しようとしました
とありますが、何のことでしょうか。
少なくともコードらしきものが2つあります。また仮にどちらの方かわかっても、単に7行目と言われてもわかりません。
まずは相手に伝わるように書きましょう。プログラミングはその後です。
人間相手ですらこれですから、機械とのコミニケーションなんて早いです。
まずは相手に伝わるように書きます。
ごもっともでございます。
現在試したことの欄を修正いたしました。
今後はより分かりやすく質問の内容が伝わるように精進していきます。
ご指摘ありがとうございました。
そもそも、このサイトは学校の課題を教えて貰うためサイトではありません。
学校の課題なら、学校の先生に聞いた方が良いですよ。言語についてどの程度教えたか把握しているでしょうし。課題はあなたの授業の理解度、次の授業の前提知識の確認のために出しているようなものですから、赤の他人に聞いて答えを貰っても意味がないでしょう。エラーメッセージをWebで調べたり、デバッグしてプログラムの動きを確認する調べ方を考えるのも授業の一環だと思います。
[推奨していない質問]
https://teratail.com/help/avoid-asking
> 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
ごもっともでございますね。
学校に行く機会もなく、誰かに聞くことが殆どなかったためネットで投稿して手伝ってもらおうなどと甘い考えを持ってしまいました。
そして、この課題が出された授業はもう終わっていて、質問などが締め切られてしまった状態でした。課題の提出はかろうじて期限を伸ばしてもらったものの、自身の力のみでは完全には解けないと判断しました。
期間内に先生に聞くということを怠り課題から逃げてしまいました。すみません。
これからはわからないことはすぐに先生に聞くことにします。
見苦しい言い訳とわがままを言ってしまいすみません。