提问人:LPo 提问时间:9/9/2022 更新时间:9/9/2022 访问量:30
在 C++ 中打开作为构造函数参数传递的结构
Switching on structure passed as constructor parameter in C++
问:
我有一个配置文件头文件,其中包含在类“MyClass”中使用的静态配置。
在 class_config.h 中
typedef enum {
SEQUENCE_1 = 5,
SEQUENCE_2 = 8,
} Sequence;
typedef struct {
int Position;
Sequence FirstSequence;
Sequence SecondSequence;
} Map;
typedef struct {
Map Mapping01;
Map Mapping02;
} Config;
Config DefaultConfig {
{
1,
SEQUENCE_1,
SEQUENCE_2
},
{
2,
SEQUENCE_2,
SEQUENCE_2
},
};
在 class.h 中
Class MyClass
{
public:
MyClass(const Config &config);
private:
void Foo(int position);
const Config &internal_config;
}
在类.cpp中
MyClass::MyClass(const Config &config) : internal_config(config)
{ }
void MyClass:Foo(int position)
{
switch(position)
{
case internal_config.Mapping01.Position : // error : "this" cannot be used in a constant expression
// Get : internal_config.Mapping01.SEQUENCE_1
break;
default:
break;
}
}
在我的方法“Foo”中,我想找出“位置”是否等于internal_config。Mapping01.位置或internal_config。Mapping02.Position,例如返回映射的相应序列。 但是我在编译时出现以下错误:“this”不能在常量表达式中使用
我知道开关案例在构建时需要 const 表达式,但这就是我正在做的事情。使用 if else 模式而不是开关情况 one 让我很困扰。
我错过了什么吗?
答: 暂无答案
下一个:结构模式的正向声明
评论
internal_config
typedef