2016-06-17 11 views
1

Value.h別々のマップ宣言と初期化

#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" } 
}; 

しかし、私は再定義を取得保管。複数の初期化エラー。宣言して初期化する必要はありますか?私は地図をグローバルにしたい。クラス内でマップをラップしないことは可能ですか?私はこのファイルを他のファイルのマップと値の情報にしたいだけです。

+0

「extern」とマークしてください... – gsamaras

答えて

6

std::map<uint8_t, std::string> status;は、イニシャライザ(空のマップ)がなくても、まだdefinitionです。

externを使用して、Value.hの宣言にすることができます。また

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

、EXTERNを使用しないイニシャライザを持たない変数宣言は、定義ではありません。

+0

Beautiful :)ありがとうございます! – Zanko

関連する問題