Använda uppräknade typer som bitflaggor (2 / 3 steg)

Steg 2: Använda uppräknade typer



Så hur många gånger har ni använt denna idiom:

template
class EnumFlag {
public:
void set(T f) {
_flags |= (1<<(uint64_t)f);
}
void unset(T f) {
_flags &= ~(1<<(uint64_t)f);
}
void toggle(T f) {
_flags ^= (1<<(uint64_t)f);
}
void zero() { _flags = (uint64_t)0; }
bool has(T f) { return (_flags & f); }

private:
uint64_t _flags;
};

Ibland kan det vara en stor smärta att hantera bitmasker, särskilt när du går över utrymmet som 32-bitars flagga. Något litet fel i din definiera kan helt kasta av din flagga kontroll. Det finns ett enklare sätt genom att dynamiskt skapa bitmasker med den bit placeringen, och jag har skrivit en klass som gör just detta.

enum class MyFlags : uint64_t {
FLAG1 = 1,
FLAG2,
FLAG3,
FLAG4
};

EnumFlag<MyFlags> myFlag;
// Initialize the flags
myFlag.zero();
// Set flag2
myFlag.set(MyFlags::FLAG2);
// Check for flag3
if (myFlag.has(MyFlags.FLAG3) do_something();

Du vill självklart ändra uint64_t till uint32_t om du är på en 32-bitars system. Du
använda en EnumFlag med 1-indexerade uppräknare, såhär:

Märka flaggorna är bara objekt i en uppräknad datatyp. Innebär detta ingen hård-kodning flagga masken till flaggan namn och ger dig ett enkelt sätt att infoga nya flaggor var som helst i enum flagga struktur och nästa gång du kompilerar det refactor allt.

Hur snyggt är det?!

Se Steg
Relaterade Ämnen

Använda en Online tangentbordet som ett hjälpmedel

detta är kanske det enklaste instructable ända sedan det innebär bara två steg. Men först vill jag ge en kort historik.Ungefär ett år sedan, jag tog en gammal Linux laptop och anslöt den till min TV så jag kunde surfa på webben och titta på online vi...

Använda en LCD-Monitor som en TV utan en dator

LCD-TV har kommit ner i pris, men inte tillräckligt. Om du har en kabel-TV, än din tv tuner är i som rutan, inte i tv, så då varför köpa en tv med en tuner som du aldrig kommer att använda? Tro det eller ej kan du spara nästan $200 när du köper en da...

Använda en Kindle Fire som en skärm för din Raspberry pi

I denna svårlösta jag kommer att visa dig hur man använder en kindle fire som skärm för en raspberry pi. Jag hade en gammal kindle fire som jag fick ett par år tillbaka som jag inte använder längre och jag tänkte, varför inte använda den som en monit...

Använda din laddare adapter som iPod stand

har du en extra eller trasiga telefonladdare? Inte kasta bort det! Du kan använda den som en iPod stå.Steg 1: Demontera din laddare. Och skar en av stiftet med en fräs. Se bilden nedan.Steg 2: That's it! Nu har du själv en iPod stå!...

Använda din lerkruka potten som en Dumpling ångbåt

Göra perfekt ångad fläsk dumplings utan en bambu ångbåt. Jag ska visa dig hur.Steg 1: Konfigurera din lerkruka potten Du behöver hitta ett durkslag som passar i din långsam spis. Jag hade denna följsamma kisel vegetabiliska ångaren ligger runt huset....

Använda en NPN-Transistor som en Switch! (Ingen lödning!)

Gör en LED omkopplare på eller av beroende på en NPN-transistor. Du behöver:1 set av brödunderläggen7 fast - Core ledningar1 NPN Transistor2 AA batterier1 Grön LED1 lysdiod (valfri färg! Jag använde en vit en som lyser en bärnstensfärgad.)Det är allt...

Hur man kan använda ett måttband som en rak kant - Build.com 30 andra tips

inte har en rak kant nära av? Var inte orolig! Här är ett snabbt och enkelt tips på hur man använder ett måttband som en rak kant....

Använda ett dokument klipp som en reservoarpenna stå

tuschpennor torka ut om de inte är täckta omedelbart efter som används. Eftersom begränsningen och uncapping en penna vanligtvis kräver två händer, skulle ställning komma till hands för, säg, skriver sporadiska anteckningar i en bok. Sådan står finns...

Använda din Mac OSX som en trådlös Adapter för XBOX 360

jag såg en annan guide på hur man gör detta på här men det var fruktansvärt fel och lämnade ut så mycket grejer, så jag bestämde mig att göra min egen.Steg 1: Vad du behöverDu behöver verkligen mycket att göra detta.Allt du behöver är:En Mac (denna g...

Hur stänga en dator genom att använda någon anordning som kan skicka e-post

BASICON maskin projektProfessor = Christian EchavezGrupp 10Medlemmar: Connie Tayamen, Elizabeth Sumalde, Marjorie Lim* Internet-anslutning krävs* Microsoft Outlook ska vara öppen....

* Uppdaterad * 3D Skanna ditt huvud och använda den som en schackpjäs.

Spela schack (eller monopol) med din egen anpassade bitar. Som just nu framöver.Det är häftigt, vi vet, men lugna ner dig och följ den instructable eftersom vi talar du tråg.Vi är en liten industridesign kontor i Rotterdam, Nederländerna. För över en...

Använda en combo förstärkare som ett skåp (billigt och lätt)

detta är det enklaste sättet att använda en combo förstärkare som en högtalarlåda för ett separat amp huvud. Jag använder en Line 6 Spider IV combo här men de flesta combos fungerar detta sätt. Obligatoriska delar bara kostar £8,50 ($13) och detta pr...

Använda Gmail som en extern enhet (7GB)

detta är lär du dig att använda ditt Gmail-konto som en extra enhet med 7.18 GB extra utrymme.Du behöver vara ansluten till internet för att komma åt den.Denna preety använder mycket din gmail utrymme som en online-enhet.Steg 1: Ladda ner programmet...

Pacman roligt mellanmål: använda upp som godis

vi gjorde dessa på jobbet en gång som en verksamhet för spel vecka. Barnen hade skitkul att göra dessa och mestadels bara äta allt godis. Detta är också ett bra sätt att använda en del av som påsk-godis som är på väg riktigt snart.BTW, dessa har en m...

Motorsåg Mill bygga, använda & Tips n Tricks

I detta instructable kommer vi att se hur man gör en motorsåg kvarn, hur man använder det, och diskutera några tips och tricks till dolda och mystiska konsten att bordläggning upp nedfallna träd. Välkommen ombord!Om du gillar denna guide hitta det an...

Spela fransmännen kan kan använda Arduino och Summer

Bonjour!Gör din Arduino spela den franska kan kan använda en Summer. Ingen tång. Inga bränder. Det är så rakt fram att det är så upprörande den kan kan innebär.Detta instructable täcker några inledande elektronik info, och fokuserar på att skriva skr...

Hur utforma, skriva ut och använda 3D tryckt läder stämplar!

Remläder och producerar vackra och intrikata mönster för hand kan vara mycket utmanande. Har nu gjort flera läder projekt, jag har lärt mig mycket om att arbeta med läder och som sådan jag letar alltid efter nya och bättre sätt att producera mönster...

Använda I2C_LCD för att felsöka ditt projekt

Den serial monitorn är en användbar felsökare för arduino, den kan skriva ut loggar på datorskärmen. så att, om du vill få löpande information av er projekt, måste du ta en dator med dig överallt. Nu, du kan använda I2C_LCD för att få igång stockar n...

Lätt att konstruera/använda Transistor testare

Hej allaJag fick en transistor testare från gearbest.com och eftersom jag tycker det är ett mycket användbart verktyg, beslutat att göra en instructables om det.I detta instructables ska jag visa dig hur man löda testaren ihop och ge alla funktioner...