FontStyle
-
Hallo ,
public enum FontStyle { Regular = 0, Bold = 1, Italic = 2, Underline = 4, Strikeout = 8, }der FontStyle ist ein enum. Er hat 5 Eigenschaften. Wenn ich diese setzen will muß ich sie bitweise oder verknüpfen. Dann kommt irgendeine Zahl raus.
z.B. Text soll fett und kursiv sein. Also kommt 3 raus .Was ich nur feststellen will , in C++ geht das nicht.
enum fontstyle{ regular=0,bold=1,italic=2,underlined=4}; int main() { fontstyle my; my=fontstyle::bold ^fontstyle::underlined; }so gehts in CSharp, naja da gibt es halt eine Methode , deswegen gehts wohl
textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style ^ FontStyle.Bold );
-
Was willst du jetzt genau in C++ machen? Und nachdem du dich mit C# rumgeschlagen hast, warum ausgerechnet C++ oder C++/CLI?Außerdem
geht das nichtist keine Fehlermeldung.
-
In C++ gibt es eine implizite Umwandlung von enum nach int und eingebaute Bit-Operationen für int, aber keine implizite Umwandlung von int nach enum. Wenn du das wirklich unbedingt benötigst, kannst du einen Cast verwenden:
FontStyle bold_underline = (FontStyle) (bold | underline);(btw, für die Verknüpfung ist | (bitweises ODER) besser geeignet als ^ (bitweises XOR))
-
ok danke.
ich habs jetzt nochmal in C++ versucht. Klappt aber noch nicht
enum fontstyle{ regular=0,bold=1,italic=5,underlined=4}; int main() { fontstyle my; my=(fontstyle) fontstyle::bold | fontstyle::underlined; }
-
Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C++ (auch C++0x) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Da mußt du noch die Klammern um deinen Ausdruck setzen - der Typumwandlungs-Operator hat eine höhere Priorität als die Bit-Operatoren.
-
Hinzu kommt, dass die Konstanten im umschließenden Scope liegen (die Enum hat keinen eigenen Scope). Soll heißen: anstatt
fontstyle::boldheißt es nurbold.