0

C++ を再学習していますが、クラス内の配列に問題があります。ここに私が取り組んでいるものの簡略化されたバージョンがあります

class Class
{
private:
    string array[2];
public:
    Class()
    {
        array[2] = {"Hello", "World"};
    }
    void printOut(int x)
    {
        cout << array[x];
    }

Visual Studio では、コンストラクターの配列初期化の最初の中かっこでエラーが発生します (つまり、{ "Hello", "World"}; は、「エラー: 式が必要です」と表示されます)。ただし、他のものを初期化すると、この問題は発生しません。変数 (配列ではない)。

以下に示すように、クラスのプライベートセクションで配列を宣言したときに、配列値を単純に初期化しました。

class Class
{
private:
    string array[2] = {"Hello", "World"};

しかし、Visual Studio では、等号に「エラー: データ メンバーの初期化が許可されました」というエラーが表示されます。このエラーは、変数をクラスのプライベート セクションで宣言すると同時に変数を初期化しようとすると発生します。

助けやアドバイスをいただければ幸いです。事前に感謝します。

4

1 に答える 1

3

配列は、割り当てではなく、その構文を使用してのみ初期化できます。コンストラクターの初期化リストで初期化する必要があります。

Class() : array{"Hello", "World"} {}

std::arrayまたは、割り当て可能なものを使用します。

std::array<string, 2> array;

 Class()
 {
    array = {{ "Hello", "World" }};
 }

別:

Class()
{
    array[0] = "Hello";
    array[1] = "World";
}
于 2013-01-01T20:02:13.597 に答える