Ich habe versucht, die folgende Zeile:
static const const char* values[];
Aber ich erhalte die folgende Warnung auf VC++ Warnung C4114: gleichen Qualifier mehr als einmal verwendet.
Was ist die korrekte Deklaration?
edit:
Das Ziel ist eine unveränderliche Reihe von C-StringsWie ein statisches const Array von const char erstellen *
Antwort
Sie schrieb const const
statt static const char* const values[];
auch (wo Sie den Zeiger und die zugrunde liegenden Werte als const
definieren), müssen Sie es initialisieren:
static const char* const values[] = {"string one", "string two"};
+1, Aber die Initialisierung hängt vom Kontext ab, wenn es ein 'statisches' Mitglied einer Klasse ist (meine Vermutung) dann keine Initialisierung kann in der Deklaration getan werden ... –
Verstehe ich richtig, der erste const ist für die Zeichenfolge und der zweite für das Array? – Tommy
Um das Schlüsselwort 'const' zu verdeutlichen: Ein' const' bezieht sich immer auf das "Item", das ihm übrigbleibt. Die Ausnahme hiervon ist, wenn const das erste Wort im Ausdruck ist, dann bezieht es sich auf den Gegenstand, der darauf zutrifft. Um also superkorrekt zu sein, würde man den String als 'static char const * const values []' definieren, der von rechts nach links gelesen werden kann: values ist ein Array von const-Zeigern für const chars und all dies ist statisch. – AquilaRapax
static const char* const values[];
Die Idee, die beiden const
s auf beiden Seiten des *
zu setzen, ist versuchen zu schaffen: die linke gehört char
(konstante Zeichen), gehört das Recht auf char*
(konstante Zeiger auf Zeichen)
Nebenbei ist das das gleiche wie 'static char const * const Werte []' – Dennis
- 1. C: „static const char * const“ auf „static const char *“
- 2. Array of Swift-Strings in const char * const *
- 3. printf% s const char *
- 4. C++: Bedeutung der const char * const *
- 5. Kompilierzeichenfolgen: Konstruktorüberladung Vorrang zwischen 'const char * `/` const char [] `
- 6. Unterschied zwischen statischem const char * und const char *
- 7. Convert int const char *
- 8. const char Array multiple Initialisierung C++
- 9. Wie teilt man ein const Char *?
- 10. Wie sieht ein Const Char ** aus?
- 11. const (char) * kann nicht
- 12. Unterschied zwischen const char * p und char const * p
- 13. Globale const Char Zeiger-Array in C++
- 14. Warum nimmt `execvp` ein` char * const argv [] `?
- 15. ungültige Konvertierung von 'const char *' in 'char *'
- 16. Wie speichert man ein const char * in ein char *?
- 17. const char * Verkettung
- 18. const char * Initialisierung
- 19. Initialisieren einer statischen const char * array
- 20. Umwandlung von const char * zu const std :: string &
- 21. Wie definiere ich statisches const Mitglied?
- 22. Wie übergeben Sie den Vektor der Zeichenkette an foo (char const * const * const)?
- 23. Pass char * zu const char * in c
- 24. statisches const-Array wird in MSVC dynamisch initialisiert?
- 25. const constexpr char * vs. constexpr char *
- 26. Welches zu const char [] oder const std :: string?
- 27. C++ Konvertieren eines char in ein const char *
- 28. Convert CString zu const char *
- 29. extern const char * const SOME_CONSTANT gibt mir Linkerfehler
- 30. initialisieren static char * const somevar
Was möchten Sie erstellen? Ein Array konstanter Zeiger auf konstante Zeichen? –