ペットクラスを初期化するときに、種として犬や猫を除外または禁止したいとします。 invalid_argument例外をスローする適切な方法は何でしょうか?オブジェクトを初期化するときにエラーが発生する
#include <string>
using std::string;
#include <stdexcept>
using std:: invalid_argument;
struct Pet {
const string name;
long age = 0;
const string species;
//Pet()= default;
Pet(): name("CrashDown"),age(0),species("ferret") {};
Pet(const string & the_name, const string & the_species): name(the_name), age(0),
species(the_species) {};
};
種がタイプの場合はテンプレートを使用できます。それは最も慣用的なアプローチのようです。それ以外の場合は、通常のif文を使用してctor本体をスローします。 – erip
通常、実行時ではなく*コンパイル時にエラーが発生する方が良いです。より限定された「ペット」または種の宇宙が有用であろう。 –