列挙型を反復処理するために、この質問に従っています。
enum class COLOR
{
Blue,
Red,
Green,
Purple,
First=Blue,
Last=Purple
};
COLOR operator++( COLOR& x ) { return x = (COLOR)(((int)(x) + 1)); }
COLOR operator*(COLOR c) {return c;}
COLOR begin(COLOR r) {return COLOR::First;}
// end iterator needs to return one past the end!
COLOR end(COLOR r) {return COLOR(int(COLOR::Last) + 1);}
問題は、私のプロジェクトには、個別にコンパイルされたファイルcpp
が多数あることです。hpp
コンパイラは の実装に直接アクセスする必要があるようですoperator++
。で宣言してからファイルでhpp
実装するとcpp
、エラーが発生します。
コンパイラの警告: インライン関数 'Color operator++(Color&)' が使用されていますが、定義されていません
リンカ エラー:「operator++(instruction_type&)」への未定義の参照
で直接定義するとhpp
、別のエラーが発生します
... の複数定義
、operator*
、begin
およびend
リンカー内。