2

我正在对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

4

2 回答 2

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}) {
}
于 2013-10-01T09:50:56.447 回答
1

最简单的就是:

set mySet = {};

. 或者,您可能希望为 定义一个构造函数 set,以确保您不能不对其进行初始化:

struct set
{
    //  ...
    set() { /* ... */ }
};

但是请注意,如果您这样做,则不能再使用聚合初始化;IE

set mySet = { "abc", "xyz", "123" };

将不再合法。

(当然,您不想使用 name set,因为稍后会有人来做using namespace std;并期望得到std::set。如果可以,请避免使用标准库中的名称。)

于 2013-10-01T10:14:43.550 回答