の控除を使用しています http://www.cplusplus.com/doc/tutorial/ntcs/初期化子-文字列が長すぎる、私はGCC 4.8.5を使用していると私はエラーを取得していますサイズ
状態::私はこれが、このリンクごとにC++での法的なと思いました
class MyClass {
char filebase[] = "file name base";
public:
/* constructor, destructor, functions, none of which use the value */
};
:それは、クラスの一部だ
「したがって、mywordと呼ばれるchar型の要素の配列は、これら2つのステートメントのいずれかで、文字のnullで終わるシーケンスで初期化することができます:」char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char myword[] = "Hello";
私はここで間違って何をしているのですか?
EDIT:あなたはそれはまだだけデフォルトフィールド初期化子だことを覚えておいてください、クラスの初期化子を指定すると、実際のエラーメッセージを追加し、私のコードの構文を固定は
私はgccが何を考えているのかを理解するのに一層役立つ、gcc 6.1の 'class MyClass''に' error:flexible array member 'MyClass :: filebase'を追加しました。 – melpomene
@melpomeneそれははるかに優れた診断です、それが今改善されていることを嬉しく思います。非常に最近の5.3でさえ、OPが示したのと同じ診断を与えた。 – hvd
元のシナリオで 'const char * 'を使う方が適切でしょうか?それは純粋に、クラスインスタンスごとに新しいchar配列を作成するのではなく、メモリ内の他の場所の文字列を指しているからです。 –