初始化结构体的 Const 变量
Initialize Const variable of struct
查看了其他几个问题和答案,但我似乎无法弄清楚如何将其应用于我的情况。
这是我的设置:
typdef struct sensor {
const unsigned char pin;
//otherVariables
}Sensor;
Sensor *left = new Sensor();
void initStruct() {
left->pin = 1; //illegal initialization
}
根据我一直在阅读的内容,我的以下代码似乎是一个可能的解决方案,但我不在我的编译器附近,所以我无法测试。看起来对吗?有错的可以给个解决办法吗?
void initStruct() {
left->pin = malloc(sizeOf char);
left->pin = 1;
}
不,该代码没有意义。
pin
成员是 const
所以你不能给它赋值,除非在初始化器中。
pin
成员不是指针,因此将 malloc()
分配给它不会正确编译。
我认为您需要从 struct
字段中删除 const
,这根本没有任何意义。如果要防止意外修改它,请创建 struct
实例 const
,而不是成员。
除非有什么奇怪的事情发生,否则这里不需要动态分配。如果类型是一个聚合,那么你可以简单地在声明中初始化它:
Sensor left = {1 /*, other variables */};
如果它不是聚合,则 const
成员必须在构造函数中初始化:
struct Sensor {
const unsigned char pin;
//otherVariables
Sensor(unsigned char pin) : pin(pin)
//, other variables
{}
};
(我冒昧地删除了奇怪的 C 风格 typedef
。在 C++ 中,那只是毫无意义的噪音。)
查看了其他几个问题和答案,但我似乎无法弄清楚如何将其应用于我的情况。
这是我的设置:
typdef struct sensor {
const unsigned char pin;
//otherVariables
}Sensor;
Sensor *left = new Sensor();
void initStruct() {
left->pin = 1; //illegal initialization
}
根据我一直在阅读的内容,我的以下代码似乎是一个可能的解决方案,但我不在我的编译器附近,所以我无法测试。看起来对吗?有错的可以给个解决办法吗?
void initStruct() {
left->pin = malloc(sizeOf char);
left->pin = 1;
}
不,该代码没有意义。
pin
成员是const
所以你不能给它赋值,除非在初始化器中。pin
成员不是指针,因此将malloc()
分配给它不会正确编译。
我认为您需要从 struct
字段中删除 const
,这根本没有任何意义。如果要防止意外修改它,请创建 struct
实例 const
,而不是成员。
除非有什么奇怪的事情发生,否则这里不需要动态分配。如果类型是一个聚合,那么你可以简单地在声明中初始化它:
Sensor left = {1 /*, other variables */};
如果它不是聚合,则 const
成员必须在构造函数中初始化:
struct Sensor {
const unsigned char pin;
//otherVariables
Sensor(unsigned char pin) : pin(pin)
//, other variables
{}
};
(我冒昧地删除了奇怪的 C 风格 typedef
。在 C++ 中,那只是毫无意义的噪音。)