18 Stimmen

Flaggen, enum (C)

Ich bin es nicht gewohnt, mit Flags zu programmieren, aber ich glaube, ich habe gerade eine Situation gefunden, in der sie nützlich sein könnten:

Ich habe ein paar Objekte, die sich als Hörer für bestimmte Ereignisse registrieren. Für welche Ereignisse sie sich registrieren, hängt von einer Variablen ab, die ihnen bei der Erstellung übermittelt wird. Ich denke, ein schöner Weg, dies zu tun wäre, bitweise ODER verbundenen Variablen, wie so zu senden: TAKES_DAMAGE | GRABBABLE | LIQUID , usw. Dann kann das Objekt im Konstruktor prüfen, welche Flags gesetzt sind und sich selbst als Listener für die Flags registrieren, die gesetzt sind.

Aber das ist der Punkt, an dem ich verwirrt bin. Vorzugsweise sollten die Flaggen in einer enum . Aber auch das ist ein Problem. Wenn wir diese Fahnen haben:

enum
{
    TAKES_DAMAGE,/* (0) */
    GRABBABLE, /* (1) */
    LIQUID, /* (2) */
    SOME_OTHER /* (3) */
};

Dann senden Sie die Flagge SOME_OTHER (3) ist dasselbe wie das Senden GRABBABLE | LIQUID nicht wahr?

Wie genau gehen Sie mit diesen Dingen um?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X