Вы написали эту
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;
}
Вы просто составляете синтаксис? Где ты придумал этот материал? –