Datei für Konstanten anlegen
-
@Wade1234
InitializeConstants
- wofür gab es in C++ nochmal Konstruktoren?
-
@manni66 Zum initialisieren
-
@daniel sagte in Datei für Konstanten anlegen:
@Wade1234 Es ist prinzipiell schon eine Konstante. Nur muss sie nach der Deklaration einmal geladen werden, aber sonst wird sie nicht verändert.
Was bedeutet das konkret? Nach Programmstart werden einmal alle Fonts aus einem fest definierten Ordner eingelesen?
-
@manni66 Ja
-
@manni66 sagte in Datei für Konstanten anlegen:
@Wade1234
InitializeConstants
- wofür gab es in C++ nochmal Konstruktoren?ja da bin ich dann leider raus. ich weiß natürlich, dass es konstruktoren, inititialisierungslisten usw. gibt, aber da fehlte mir jetzt grad mal die fantasie für.
-
Gibt es auch eine Möglichkeit ohne die Struktur? Wie sähe das aus?
-
@daniel was hast du gegen die struktur? du kannst sie überall hinreichen, wo du sie brauchst. also ich weiß ja jetzt nicht, wie dein programm generell aussieht, aber wenn du jetzt ungefähr eine mio konstanten hast, die alle generell von überall lesbar sein müssen, dann bietet sich das doch so an.
wenn du natürlich hier mal eine konstante brauchst und dort eine andere, dann wäre das sicherlich nicht der richtige weg, weil man ja immer nur die daten zur verfügung stellen soll, die auch benötigt werden. dann solltest du dich vielleicht erstmal mit objektorientierter modellierung beschäftigen.
-
-
@manni66 Danke, das probier ich mal
-
Also ich habe meine Struktur,
struct constants { constants(); static constexpr float pi = 3.141592654f; static const sf::Color Plum(205, 120, 205); static const sf::Color tiffanyBlue(50, 168, 168); static sf::Font font; };
Aber wenn ich ihre Member aufrufen will
sf::Color fillColor = constants.tiffanyBlue
Gibt es folgenden Error:
error: expected primary-expression before ‘.’ token
-
Tu mal das
static
wegtun tun. Oder schreib'constants::tiffanyBlue
.
-
@daniel das ist jetzt völlig sinnlos. Wenn du eine struct verwenden willst, musst du auch genau eine Instanz erzeugen und herumreichen. Der Konstruktor wird hier nie benutzt.
-
@Swordfish
Dann gibt es diesen Fehler:error: could not convert ‘mx::constants::tiffanyBlue’ from ‘const sf::Color(int)’ to ‘sf::Color’
Und unabhängig davon auch dieser:
error: expected identifier before numeric constant static sf::Color Plum(205, 120, 205);
-
@manni66 Aber bei einer statischen Member Variable brauche ich doch keine Instanz oder?
-
@daniel sagte in Datei für Konstanten anlegen:
@manni66 Aber bei einer statischen Member Variable brauche ich doch keine Instanz oder?
Du brauchst aber ohne Instanz auch keine struct, oder?
-
muss kann man statische variablen nicht außerhalb initialisieren? also warum machst du die überhaupt statisch?
-
@Wade1234 Damit ich keine Instanz brauche
-
@manni66 Kannst du das vieleicht kurz erklären? Ich verstehe das nicht ganz
-
@daniel sagte in Datei für Konstanten anlegen:
Und unabhängig davon auch dieser:
error: expected identifier before numeric constant static sf::Color Plum(205, 120, 205);
Herrgott.
struct bar_t { int a, b, c; bar_t(int a, int b, int c) : a{ a }, b{ b }, c{ c } {} }; struct foo { static bar_t const bar; }; bar_t const foo::bar = bar_t { 1, 2, 3 };
-
@daniel warum willst du keine instanz haben? sind das wieder irgendwelche bildungslücken von mir?