0

char[][][] の配列の初期化と表示に問題がありますが、実際には使用したことはありませんが、今すぐ使用する必要があるため、あまり慣れていません。配列は予約システムで使用され、ユーザー e はデッキ 1 列 1 行 1 のキャビンを要求します。これは「i」でなければなりません。

ヘッダー ファイル

#include <iostream>
#include <string>

using namespace std;

class Ship
{
public:

Ship()
{
}

char cabins[13][4][1];
void setArray();
void showArray();
};
4

3 に答える 3

2

あなたはこれを書きました

for (int k = 0; k < 13; k++)
{

    for (int j = 0; j< 1; j++)
    {
        for (int i = 0; i< 4; i++)
        {
    cabins[13][4][1] =  (("b" "i" "i" "b") 

これは、配列内のすべての文字を反復処理し、それが機能した場合、または有効な C++ であった場合、配列全体をそのスロットに割り当てようとします。

"(("b" "i" "i" "b")" がどうあるべきかわかりませんが、C++ の基礎をいくつか見逃しているようです。実際に欲しいのは、もっと似たようなものです。

char cabins[13][4]; // only needs to be 2d.

void Ship::setArray()
{
    cabins = {
       { 'b', 'i', 'i', 'b' },
       { 'b', 'i', 'i', 'b' },
       ...
    };
}

[編集: ラップトップで作業していて、早めにリターンを押しました。申し訳ありません]

これもうまくいきません。ここでの配列定義が永続的である場合は、それをどこかに保存する必要があります。

これを解決する方法の完全な単一コンパイルユニットの例を次に示します。

#include <iostream>
#include <cstring> // for memcpy

class Ship {
public:
    Ship() {}
    char m_cabins[4][4];
    void setArray();
};

void Ship::setArray() {
    static const char defaultCabinLayout[4][4] = {
        { 'b', 'i', 'i', 'b' },
        { 'b', 'i', 'i', 'b' },
        { 'w', 'i', 'i', 'w' },
        { 'w', 'i', 'i', 'w' },
    };
    static_assert(sizeof(m_cabins) == sizeof(defaultCabinLayout), "defaultCabinLayout does not match m_cabins");
    memcpy(m_cabins, defaultCabinLayout, sizeof(m_cabins));
}

int main() {
    Ship s;
    s.setArray();
    std::cout << "cabins[0][0] = " << s.m_cabins[0][0] << std::endl;    
}
于 2013-09-06T22:53:24.377 に答える
1

Use curly braces { } around values in initialization, not parentheses. Add commas in between too! And also, what is the array's definition doing inside your loop? Oh, my...

于 2013-09-06T22:35:03.507 に答える
0

これのはず…

cabins[k][j][i] 

特定のインデックスで初期化しようとしている場合は、ループしています。

例えば。

cabins[1][1][1] = 1; 

これは、デッキ 1 の列 1 と行 1 の値を 1 に設定しています。

これらの3つのforループをループしているときは、インクリメントしていますi, j, k

インデックスごとに値を割り当てる方法がよくわかりません....それについて詳しく説明していただければ、もう少しお手伝いできます。

于 2013-09-06T22:38:05.203 に答える