2017-02-27 14 views
-3

こんにちは私は初心者ですが、このエラーで頭がおかしくなります 'double'から 'int'への変換には変換が必要です これは私ですコード; #include "Segment.h" 名前空間を使用しています。imat1206;'double'から 'int'への変換では、変換が狭くなる必要があります

Segment::Segment(int new_speed_limit 
, int new_end, double new_length, double new_deceleration) 
:the_speed_limit{ new_speed_limit } 
, the_end{ new_end } 
, the_length{ new_length } 
, deceleration{ new_deceleration } 


{} 

Segment::Segment(double new_end, double new_acceleration) 
    :the_end{ new_end } 
    , acceleration{ new_acceleration } 

{} error here 
double Segment::to_real() const { 
return static_cast<double>((the_end)*(the_end)/(2 * (the_length))); 
while (acceleration) 
{ 
    (acceleration >= 0); 
     return static_cast<double> ((the_end) /(1 * (acceleration))); 
} 
} 

誰か助けて感謝
は私が取得しています誤りがあるしてください:エラーC2397:「INT」から「ダブル」からの変換は縮小変換

+0

エラーの原因となっている行を示します。 –

+2

このクラスに関連付けられた.hファイルを含め、適切な[mcve]を含める必要があります。エラーが発生している状況からは明らかではありません。 – Xirema

+0

@NeilButterworthありがとう – yoyooyoyo

答えて

0

The errordoubleへのコンバージョンによって引き起こされている必要があり第2のSegmentコンストラクタのint。あなたのコードのコンテキストから、私はthe_endintと定義されているとしますが、それにdoubleを割り当てています。

Segment::Segment(double new_end, double new_acceleration) 
    : the_end{ new_end },    // <-- Here 
    acceleration{ new_acceleration } 
{ 

} 

特に初期化リストを使用すると、エラーが発生する原因は、do not allow for narrowingです。あなたの状況のた​​めの特別な注目すべき

  • 浮動小数点値を整数型に変換することができません。

    Segment::Segment(double new_end, double new_acceleration) 
        : the_end{ static_cast<int>(new_end) }, 
        acceleration{ new_acceleration } 
    { 
    
    } 
    

    はもちろんのノートに行くからから、double(整数の切り捨てにintからのデータの潜在的損失をキャストの潜在的な危険性を実行します。

エラーを修正するには、単に明示的なキャストを提供8バイトから4バイトなど)。