私が作成しているクラスの最大サイズを明示的に制限しようとしていますが、動作しているように見えますが醜いように見えます。この例はやや工夫されていますが、状況がより自然に発生した場合に備えて私は知りたいと思います。C++イニシャライザリストの制約チェック
であるとしてここでは、次のとおりです。
PriorityQueue(const unsigned int maxSizeIn) :
maxSize((maxSizeIn >= SOME_CONSTANT) ? SOME_CONSTANT - 1 : maxSizeIn),
queueArray(new PriorityPair<T>*[maxSizeIn]()),
currentHeapSize(0)
{
}
clunkinessは、初期化子リスト中の三元表現を持っていることから来ています。これはうまくいくが、リストの各構成要素を1行ずつ細かく分けなければならないということは特に気にならない。私はそのロジックをコンストラクタの本体に移そうとしましたが、私はそれをどのように試して問題が発生しました。
わかりやすくするために、私は元のものを編集して、私が求めていることをより強調しています。つまり、イニシャライザのリストに制約を加えるのがよりクリーンで機能的に同等な方法があります。
このような問題の解決策は何でしょうか。あなたはそのためのstd::min
使用する
なぜ 'maxSizeIn'は' numeric_limits :: max() 'と等しくないのですか? –
NathanOliver
@ NathanOliverその部分は任意です。私はもっと全部の頑固さに心配しています。 – Caboose