C++ extern enums
gefunden habe ich bereits diese: extern enum in c++
Aber es hat mir nicht geholfen viel. Ich habe eine config.h und einer config.cpp in der config.h ich habe meine enum:
#ifndef CONFIG_H
#define CONFIG_H
extern enum Items;
#endif
Und in meinem config.cpp ich habe das enum deklariert:
#include "config.h"
enum Items {
PAC = 'C', GHOST = '@', FRUIT = 'o', POINTS = '.', WALL = '#', EMPTY = ' ', UNDEFINED = '+'
} fieldItems;
Aber wenn ich versuche zu kompilieren, der compiler gibt mir folgende Fehler:
config.cpp:20:13: error: a storage class can only be specified for objects and functions
extern enum Items;
^
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie nicht in der Lage zu definieren, eine
enum
extern. In C++11 können Sie vorwärts deklarieren Sie eineenum
jedoch:... und später definieren:
Beachten Sie jedoch, dass Sie mit dem enumerator-tags nur dort, wo die definition zu sehen war.
Basierend auf Ihren Kommentar über mehrere Definitionen, die Sie nicht haben enthalten die Wachen in den header ein und den selben header bekommt mehrere Male. Das heißt, es scheint, Sie hätte einen header so etwas wie dieses:
Von den blicken von ihm, Sie versuchen, Falten Sie die Darstellung des Spiels in der definition Ihrer Namen. Dass das wohl nicht allzu gut funktionieren, vor allem, da Sie möglicherweise ändern Sie das Aussehen (wollen Sie vielleicht
PAC
Alternative zwischenC
undO
zum Beispiel). Wahrscheinlich der eigentliche code sprechen über diese Namen und Sie haben das an mehreren stellen. Verwenden Sie einfach einenenum
zu definieren, die verschiedenen Gegenstände, die nicht der Definition einen beliebigen Wert für Sie, und definieren Sie Ihre Darstellung an anderer Stelle:... und dann benutzen Sie einfach
ItemDisplay[item]
Wann immer Sie brauchen, um zu zeichnen einitem
.char
zur Darstellung der verschiedenen Spielfiguren, die Sie verwenden würden, einen anderen Ansatz, zum Beispiel.Die Antwort auf Ihre Frage ist, dass Sie brauchen, um diese zu verwenden, um extern
extern Items fieldItems;
versuchen, die enum-definition in der header-Datei und versuchen Sie dann, die externSie definiert einen Typ, keine variable. Ein Typ kann nicht statisch sein oder extern. Deklarieren Sie eine variable dieses Typs.
extern enum-Elemente nicht erklären nichts: es ist einfach sagt Ihnen, dass es ein enum-Typ als Objekte bezeichnet. Ich denke, was Sie wirklich wollen, ist
Alternativ
extern enum Items;
einen syntax-Fehler.Verwenden Sie
extern
zu erklären link-Zeit Person, die Sie verweisen möchten, die an anderer Stelle definierten. Jedoch, Enumerationen sind Sammlungen von compile-Zeit Konstanten; Sie haben nicht eine Darstellung im Objekt-Dateien.Die Ideologie von C und C++ ist so, dass jede compilation unit muss sich selbst ausreichend für den Zweck der Zusammenstellung, das heißt, alle notwendigen compile-Zeit Entitäten definiert werden muss, die in der compilation unit.