Mon but est de pouvoir créer des variables statiques uniquement en en-tête avec une macro qui prendrait soin de l'initialiser dans un fichier .cpp
pour moi avec la valeur que j'ai fournie. Il devrait ressembler à ceci:Définir une variable statique dans l'en-tête en utilisant seulement la macro
struct UserDefaults {
STATIC(bool, isFullscreen, true)
STATIC(bool, isBorderless, false)
STATIC(std::string, profileName, "")
}
qui serait égal à:
// .hpp file
struct UserDefaults {
static bool isFullscreen;
static bool isBorderless;
static std::string profileName;
}
// .cpp file
bool UserDefaults::isFullscreen = true;
bool UserDefaults::isBorderless= false;
std::string UserDefaults::profileName = "";
Je l'ai regardé How to have static data members in a header-only library?, mais je ne pouvais pas appliquer la solution de Pesche pour mon cas.
Une macro ne peut pas effectuer ce type de séparation. Vous devez utiliser un script de pré-traitement qui est exécuté avant la compilation pour analyser la source et générer un tel code. –
Il semble que j'ai entendu une discussion sur un sujet similaire à celui d'il y a quelques années et le résultat final était la décision d'utiliser des fonctions membres statiques ... la fonction a une seule variable membre qui retourne une référence ... façon de le faire ... –
@RemyLebeau Je sais qu'il n'y a pas une seule solution macro. J'ai essayé d'utiliser la solution en utilisant des modèles de la question que j'ai posté avec la création de macros pour l'initialisation, la lecture et l'écriture. Les macros –