0
私のプログラムでは、プログラムのロジックを管理するために、#define
ディレクティブで定義された定数を使用します。同時に、これらの値の1つを印刷する必要がある場合、これらの数値を文字列でマップする方法が必要です。文字列の配列を定義し、その値をC++のヘッダーファイルに設定する方法は?
ヘッダファイル:header.hpp
#ifndef HEADER_HPP
#define HEADER_HPP
#include <string>
#define CODE_0 0
#define CODE_1 1
#define CODE_2 2
#define CODE_3 3
std::string label[4];
label[CODE_0] = "label0";
label[CODE_1] = "label1";
label[CODE_2] = "label2";
label[CODE_3] = "label3";
#endif /* HEADER_HPP */
主な機能:source.cpp
#include "header.hpp"
#include <iostream>
int main()
{
std::cout << "Start" << std::endl;
std::cout << "Code #" << CODE_1 << " has label '" << label[CODE_1] << "'" << std::endl;
std::cout << "End" << std::endl;
return 0;
}
しかし、これは動作しません。ここ
は私がしようとしてるものの簡易版です。コンパイラの出力は次のとおりです。In file included from source.cpp:1:0:
header.hpp:12:1: error: 'label' does not name a type
label[CODE_0] = "label0";
^
header.hpp:13:1: error: 'label' does not name a type
label[CODE_1] = "label1";
^
header.hpp:14:1: error: 'label' does not name a type
label[CODE_2] = "label2";
^
header.hpp:15:1: error: 'label' does not name a type
label[CODE_3] = "label3";
^
なぜこれが起こっているのか分かりません。これは、配列の値を設定する方法ではないようです。正しい方法は何でしょうか?
また、これは異なる質問ですが、これらの定数値をそれぞれの文字列にマップするにはどうすればよいでしょうか?私はそれらを定数(数値と文字列の両方)にするつもりであることに注意してください。