0

2つのプロパティ(配列)を持つ単純なクラスを作成しました。すべての配列要素を0またはNULLに初期化しようとしていますが、コンパイラ(vc ++ 2010)がエラーをスローします。

class Marina{
public:
char port[100];
char bport[25];

Marina(){
this->port = {0};
this->bport = {0}; 
}

};

私はまた、このような簡単なステートメントを試しました:

class Marina(){
public:
char port[100] = {0};
char port[25] = {0};



};
4

3 に答える 3

4

あなたはこれを必要とします:

Marina() : port(), bport() {}

これにより、両方の配列がすべてゼロで初期化されます。

C++11 では、宣言の時点で非静的メンバー変数を定義できるため、次のようにすることができます。

class Marina {
public:
  char port[100] = {0};
  char bport[25] = {0};
};
于 2012-04-29T12:21:37.640 に答える
1
Marina(){
//std::fill is in <algorithm>
std::fill (port, port + 100, 0);
std::fill (bport, bport + 25, 0);

このコードセグメントには何かが欠けています。終わりのブレースはありません!私はあなたの割り当てを、中括弧がそこにある限り機能するものに置き換えました。

それ以外に、初期化は初期化子リストで実行する必要があるため、コードはまだそのようにコンパイルされません。

Marina()
    : port ({0}), bport ({0}) {}
于 2012-04-29T12:17:20.853 に答える
0

あなたの中括弧は一致しません。右中括弧よりも左中括弧が 1 つ多くあります。中括弧が一致しないコードは形式が正しくありません。残念ながら、右中括弧の欠落に対するコンパイラ メッセージは、常に明確であるとは限りません。右中括弧で閉じるのを忘れた左中括弧をコンパイラーはどのように知ることができますか?

于 2012-04-29T12:28:35.203 に答える