Datei für Konstanten anlegen
-
@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?
-
@Wade1234 Wenn das Ding nur statische member hat brauchts auch keine Instanz davon.
-
@Swordfish dein beispiel erklärt den sinn.
-
@Wade1234 Ja. Vielleicht sollte ich Informatik studieren damit ich das Kästchenmalen auch noch lerne. *scnr* *liebhab'*
-
@daniel sagte in Datei für Konstanten anlegen:
@manni66 Kannst du das vieleicht kurz erklären? Ich verstehe das nicht ganz
Was du jetzt hast ist dein ursprünglicher Ansatz mit struct drumrum. Welchen zusätzlichen Nutzen hat das struct?
-
@manni66 ich habe den Anfang vorher garnicht gelesen. Was ist überhaupt das problem?
-
@Swordfish Ich brauche nur eine Datei, in der ich Konstanten und Farbdefinitionen speichern kann, das sollten dann also Globale Konstanten sein. Ich weiß nur nicht wie ich das am besten und einfachsten mache
-
constants.h
#ifndef CONSTANTS_H_INCLUDED #define CONSTANTS_H_INCLUDED extern int constexpr my_constant; #endif /* CONSTANTS_H_INCLUDED */
constants.cpp
#include "constants.h" // eigentlich überflüssig. int constexpr my_constant = 42;
Eventuell die variablen noch in einen namespace stecken. Geschmackssache.
-
@Swordfish In etwa so war auch meine Ausgangssituation, nur mein Problem ist, dass ich sf::Font font noch in der nächsten Zeile verändern möchte. Und dann kann ich ja kein const benutzen. Es soll also Konstant sein, nachdem ich es kurz verändert habe