2017-06-22 1 views
1

は、 コンパイラは エラーを前記しました'std :: __ success_type> :: type {aka std :: chrono :: duration>}と' std :: __ success_type> :: :: type {aka std :: chrono :: time_point> ') end = std :: chrono :: high_resolution_clock :: now() - 開始;STDを使用して「演算子=」なし一致::クロノ:: high_resolution_clock

私は開始と終了の変数型が間違っていると思います。 正しいタイプは何ですか? std :: chrono :: high_resolution_clockを使いたいです。

#include <chrono> 

namespace timer{ 
static std::chrono::system_clock::time_point start, end; 

void initTime(){ 
    start = std::chrono::high_resolution_clock::now(); 
} 


void endTime(){ 
    end = std::chrono::high_resolution_clock::now() - start; 
} 

} 

timer.hppは、いくつかのメインファイルで使用することになっています。 関数の後にtimer :: endTime()を呼び出し、測定したいtimerの前にtimer :: endTime()を呼び出すと、タイミング結果が返されます(ここでは時間のゲッターは省略されています)。あなたは、時間のポイントとしてendを宣言したが、その後代入演算子の右側に、次の2つの時点(now()start引いている

static std::chrono::system_clock::time_point start, end; 
/* ... */ 

void endTime(){ 
    end = std::chrono::high_resolution_clock::now() - start; 
} 

+0

「chrono」のビデオチュートリアルです:https://www.youtube.com/watch?v=P32hvk8b13Mこのような問題を解決します。 –

答えて

2

は、このコードには二つの問題があります)を割り当て、endに割り当てます。

time pointsの2つを減算すると、論理的に新しい時刻ポイントは取得されません。たとえば、今日の「08:15:00」 - 「今日の08:05:00」を差し引きたい場合、結果を「今日の00:10:00」と記述することは意味がありません。代わりに、C++クロノライブラリにはduration class templateがあります。時間の長さ(例えば、2つの時点の間の差)を表すことを意図している。

ここoperator -過負荷番号4を参照してください: http://en.cppreference.com/w/cpp/chrono/time_point/operator_arith2

を私は@Howardヒナントは、上記にリンクされていることのチュートリアルビデオを見てお勧め...氏ヒナントを務めていましたboost::chronoライブラリの筆頭著者でありますC++標準ライブラリ内のchronoコンポーネントの基本です。

電位問題はstartは(std::chrono::high_resolution_clock::time_point型を持つ)std::chrono::high_resolution_clock::now()によって返されるタイプとは異なるタイプ(異なるクロック)であってもよいstd::chrono::system_clock::time_pointを入力有することです。

+0

Nitpick: 'boost :: chrono'ライブラリの基礎となる' std :: chrono'ライブラリの主著者(他の寄稿者がいました)です。 :-) –

+0

私はそれに応じて特性を変更しました。 – NicholasM

+0

ありがとうございます。私のポイントの1つは、この場合、 'std'が最初に来て、' boost'が続いたということです。さて、少なくとも "std"ドラフトが最初に来ました。 2011年にstdがファイナルになる前に、おそらくboost libが登場しました。これは、あなたの良い答えにとってはあまり重要ではありません。これらはちょうど歴史的なちょっとした話です。 –

関連する問題