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

それを行う1つの方法は次のとおりです。

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() { /* ... */ }
};

ただし、これを行うと、集計の初期化を使用できなくなることに注意してください。すなわち

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

合法ではなくなります。

set(そしてもちろん、誰かが後でやってきて を実行しusing namespace std;、 を取得することを期待するため、名前を使用したくありませんstd::set。可能であれば、標準ライブラリの名前は避けてください。)

于 2013-10-01T10:14:43.550 に答える