C ++をオーバーロードする列挙子演算子の「&」トークンの前にイニシャライザが必要です

vitsuk

enumタイプをインクリメントするオーバーロード演算子を書きたい

#include <iostream>
#include <vector>
#include <string>
#include <stdexcept>
using namespace std;


enum Type {grun,grun_blinkend,gelb,rot ,rot_gelb,gelb_blinkend}



Type& operator++(Type& color){
    return color = static_cast<Type>(++static_cast<int>(Type)); 
};

しかし、それは私にエラーを投げます:

エラー:「&」トークンの前に初期化子が必要です

なぜ、どうすれば修正できますか?

「信号機」シミュレーションのタイプを反復処理するには、この演算子が必要です。

Ampel Ampel::weiter(){
    if(zustand ==  Type(rot_gelb)){
        zustand = Type(grun);
        return Ampel(zustand);
    }
    ++zustand;
    return Ampel(zustand);
}
Jweaver

これは解決策ですが、gelb_blinkendよりも高い整数に注意する必要があります。この質問参照することをお勧めします。また、の変更についても検討する必要がありますこのenumためenum class、この別の質問をお勧めします。

enum Type {grun,grun_blinkend,gelb,rot ,rot_gelb,gelb_blinkend};

Type& operator++(Type& color){
    int current = static_cast<int>(color);
    return color = static_cast<Type>(++current); 
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++、クラスのポイントの代入演算子をオーバーロードできますか?

分類Dev

C ++の子クラスで列挙型をオーバーロードする

分類Dev

ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

分類Dev

C ++ 20の概念では、演算子のオーバーロードとユーザー定義のテンプレート演算子のオーバーロード関数を組み合わせる必要があります

分類Dev

C ++:演算子のオーバーロードエラーを理解するのに助けが必要

分類Dev

バイナリ式に対する無効なオペランド(C ++演算子のオーバーロード)

分類Dev

オブジェクト内のポインタを他のオブジェクトに設定するためのC ++演算子のオーバーロード

分類Dev

リンクリストのcの[]演算子をオーバーライドする方法

分類Dev

CythonがC ++演算子をインポートする:「演算子 '+ ='のオーバーロードはまだサポートされていません。」

分類Dev

C#コンパイラは明示的なキャスト演算子のオーバーロードをどのように処理しますか?

分類Dev

C ++インライン演算子のオーバーロード、現在のオブジェクトを参照

分類Dev

演算子のオーバーロードを使用して、インデックスによってユーザー定義の配列を割り当てることは可能ですか?-C ++

分類Dev

C ++でポストインクリメント演算子をオーバーロードすると、コンストラクターが2回呼び出されるのはなぜですか?

分類Dev

C ++で抽象クラスの配列を含むクラスの演算子[]をオーバーロードするにはどうすればよいですか?

分類Dev

C ++で派生クラスを使用するための演算子のオーバーライド

分類Dev

C ++テンプレート演算子をオーバーロードしてプライベートプロパティにアクセスする方法

分類Dev

C ++ 17エラー:「 '。'の前にプライマリ式が必要です。関数に列挙値を渡すときの「トークン」

分類Dev

配列を使用するこのbigintクラスの+演算子をオーバーロードするにはどうすればよいですか?C ++

分類Dev

子クラスのC ++オーバーロード演算子<<

分類Dev

C ++インクリメント++演算子のオーバーロード

分類Dev

C ++でインクリメント演算子をオーバーロードしようとしています

分類Dev

c ++演算子のオーバーロード-実際に返されるオペランドタイプは何ですか?

分類Dev

C ++演算子のオーバーロードに相当するJava

分類Dev

C ++でのI / O演算子のオーバーロードにフレンド関数を使用する

分類Dev

C ++演算子のオーバーロードを整理する

分類Dev

C ++演算子のオーバーロードを理解する

分類Dev

c ++-テンプレートクラスでオーバーロードするフレンド演算子

分類Dev

C ++は、子クラスでオーバーロードされた演算子を無効にします

分類Dev

C ++での>>演算子のオーバーロードに関する問題?

Related 関連記事

  1. 1

    C ++、クラスのポイントの代入演算子をオーバーロードできますか?

  2. 2

    C ++の子クラスで列挙型をオーバーロードする

  3. 3

    ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

  4. 4

    C ++ 20の概念では、演算子のオーバーロードとユーザー定義のテンプレート演算子のオーバーロード関数を組み合わせる必要があります

  5. 5

    C ++:演算子のオーバーロードエラーを理解するのに助けが必要

  6. 6

    バイナリ式に対する無効なオペランド(C ++演算子のオーバーロード)

  7. 7

    オブジェクト内のポインタを他のオブジェクトに設定するためのC ++演算子のオーバーロード

  8. 8

    リンクリストのcの[]演算子をオーバーライドする方法

  9. 9

    CythonがC ++演算子をインポートする:「演算子 '+ ='のオーバーロードはまだサポートされていません。」

  10. 10

    C#コンパイラは明示的なキャスト演算子のオーバーロードをどのように処理しますか?

  11. 11

    C ++インライン演算子のオーバーロード、現在のオブジェクトを参照

  12. 12

    演算子のオーバーロードを使用して、インデックスによってユーザー定義の配列を割り当てることは可能ですか?-C ++

  13. 13

    C ++でポストインクリメント演算子をオーバーロードすると、コンストラクターが2回呼び出されるのはなぜですか?

  14. 14

    C ++で抽象クラスの配列を含むクラスの演算子[]をオーバーロードするにはどうすればよいですか?

  15. 15

    C ++で派生クラスを使用するための演算子のオーバーライド

  16. 16

    C ++テンプレート演算子をオーバーロードしてプライベートプロパティにアクセスする方法

  17. 17

    C ++ 17エラー:「 '。'の前にプライマリ式が必要です。関数に列挙値を渡すときの「トークン」

  18. 18

    配列を使用するこのbigintクラスの+演算子をオーバーロードするにはどうすればよいですか?C ++

  19. 19

    子クラスのC ++オーバーロード演算子<<

  20. 20

    C ++インクリメント++演算子のオーバーロード

  21. 21

    C ++でインクリメント演算子をオーバーロードしようとしています

  22. 22

    c ++演算子のオーバーロード-実際に返されるオペランドタイプは何ですか?

  23. 23

    C ++演算子のオーバーロードに相当するJava

  24. 24

    C ++でのI / O演算子のオーバーロードにフレンド関数を使用する

  25. 25

    C ++演算子のオーバーロードを整理する

  26. 26

    C ++演算子のオーバーロードを理解する

  27. 27

    c ++-テンプレートクラスでオーバーロードするフレンド演算子

  28. 28

    C ++は、子クラスでオーバーロードされた演算子を無効にします

  29. 29

    C ++での>>演算子のオーバーロードに関する問題?

ホットタグ

アーカイブ