2016-06-17 27 views
1

Value.hseparate Karte Deklaration und Initialisierung

#ifndef VALUE_H 
#define VALUE_H 
#include <map> 
#include <string> 
std::map<uint8_t, std::string> status; 
#endif 

Value.cpp

#include "Value.h" 
std::map<uint8_t, std::string> status = { 
    { 0x00, "Status1" }, 
    { 0x11, "Status2" }, 
    { 0x10, "Status3" } 
}; 

Aber ich behielt Neudefinition bekommen; Mehrfachinitialisierung Fehler; Wie soll ich deklarieren und initialisieren? Ich möchte, dass die Karte global ist. Ist es möglich, die Karte nicht in einer Klasse zu verpacken? Ich möchte nur, dass diese Datei eine Information der Karte und Werte für andere Dateien ist.

+0

Markieren Sie es einfach als "extern" ... – gsamaras

Antwort

6

Hinweis std::map<uint8_t, std::string> status; ist immer noch eine definition, auch ohne Initialisierer (d. H. Eine leere Karte).

Sie können extern verwenden, um es zu einer Deklaration in Value.h zu machen;

extern std::map<uint8_t, std::string> status; 

Zusätzlich wird eine Variablendeklaration, die extern verwendet und keine Initialisierer hat, ist keine Definition.

+0

Schön :) Danke! – Zanko