我正在编程Arduino,我正在尝试重构
中的代码char variable1[10] = {'\0' };
char variable2[10] = {'\0' };
char variable3[10] = {'\0' };
到
struct set {
char variable1[10];
char variable2[10];
char variable3[10];
} mySet;
但是,当我尝试通过运行以下代码初始化上述struct
的成员时
mySet.variable1 = {'\0' };
// or
mySet.variable1 = '\0';
然后我收到以下错误:
expected constructor, destructor, or type conversion before '.' token
我应该/应该如何初始化并正确使用struct
?
答案 0 :(得分:2)
一种方法如下:
struct set {
char variable1[10];
char variable2[10];
char variable3[10];
} mySet = {{'\0'}, {'\0'}, {'\0'}};
当然,在C ++中,您可以使用0
代替'\0'
,因此您可以用更易读的方式编写它:
struct set {
char variable1[10];
char variable2[10];
char variable3[10];
} mySet = {{0}, {0}, {0}};
最后,因为这是C ++,所以没有理由不给你的struct
一个构造函数,所以如果你打算初始化很多这样的结构,你可以使用默认的构造函数:
set()
: variable1({0})
, variable2({0})
, variable3({0}) {
}
答案 1 :(得分:1)
最简单的只是:
set mySet = {};
。或者,您可能希望为其定义构造函数
set
,确保您无法初始化它:
struct set
{
// ...
set() { /* ... */ }
};
但请注意,如果您这样做,则无法再使用 聚合初始化;即。
set mySet = { "abc", "xyz", "123" };
将不再合法。
(当然,您不想使用名称set
,因为
有人会稍后再来using namespace std;
,然后。{
期望获得std::set
。避免使用标准中的名称
如果可以的话库。)