2017-11-17 10 views
-3

週給を週単位で計算するクラスを作成したいが、何か変なものが出力される:-1.07374e + 08。どんな助け?総週給を計算するクラス

#include <iostream> 
using namespace std; 

class Wage { 
public: 
Wage(int hW, int h) { 
    hWage = hW; 
    hours = h; 
} 
void setWage() { 
    if (hours <= 40) { 
     tWage = hours * tWage; 
    } else { 
     tWage = hours * hWage + (hours - 40) * (hWage * 1.5); 
    } 
} 
float getWage() { 
    return tWage; 
} 

private: 
float tWage; 
float hWage; 
float hours; 
}; 

int main() { 

Wage w(10, 8); 
cout << w.getWage() << endl; 

return 0; 
} 
+1

メンバ 'tWage'は初期化されていませんが、 'setWage()'で読み込まれます。インスタンスの作成時に値がゼロになる場合は、コンストラクターで値を設定します。 – harper

+1

[ヘルプページ](http://stackoverflow.com/help)、特に[ここではどのトピックを聞くことができますか?](http://stackoverflow.com/help)を読んでください。/on-topic)と[[どのような種類の質問を避けるべきですか?]](http://stackoverflow.com/help/dont-ask)を参照してください。また、[ツアーを受けてください](http://stackoverflow.com/tour)と[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)もご覧ください。また、http://idownvotedbecau.se/itsnotworking/ –

+1

デバッガでコードをステップ実行しようとしましたか?それが何を言ったのですか? – Angew

答えて

1

w.tWageは初期化されていません。あなたはw.getWage()を求めていますが、値を計算する関数はまだ呼び出されていません。

1

w.getWage()を呼び出す前にw.setWage()に電話したことはありません。

+0

はい、そうです。私たちはすべてバグを探しますが、あなたにとって最も重要なバグです。 – harper