如何在 C++ 的头文件中定义字符串数组并设置其值?
How to define an array of strings and set its values in header files in C++?
在我的程序中,我使用通过 #define
指令定义的常量来管理程序的逻辑。同时,如果我需要打印这些值之一,我需要一些方法将这些数字映射到一个字符串。
这是我正在尝试的简化版本:
头文件: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";
^
我不确定为什么会这样。看起来这不是设置数组值的方法。正确的方法是什么?
此外,虽然这是一个不同的问题,但将这些常量数值映射到它们各自的字符串的更好方法是什么?请注意,我希望它们保持不变(数字和字符串)。
您可以在头文件中初始化此数组,无需显式赋值语句:
std::string label[4] =
{
"label0"
, "label1"
, "label2"
, "label3"
};
更好的方法是完全摆脱它或至少使它成为 class 静态变量并在 cpp 文件中定义。另外,最好用枚举器替换 #define CODE_0
macroses。
在我的程序中,我使用通过 #define
指令定义的常量来管理程序的逻辑。同时,如果我需要打印这些值之一,我需要一些方法将这些数字映射到一个字符串。
这是我正在尝试的简化版本:
头文件: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";
^
我不确定为什么会这样。看起来这不是设置数组值的方法。正确的方法是什么?
此外,虽然这是一个不同的问题,但将这些常量数值映射到它们各自的字符串的更好方法是什么?请注意,我希望它们保持不变(数字和字符串)。
您可以在头文件中初始化此数组,无需显式赋值语句:
std::string label[4] =
{
"label0"
, "label1"
, "label2"
, "label3"
};
更好的方法是完全摆脱它或至少使它成为 class 静态变量并在 cpp 文件中定义。另外,最好用枚举器替换 #define CODE_0
macroses。