Ошибки полностью:
Ошибка (активно) E0144 значение типа "char" нельзя использовать для инициализации сущности типа "int [1][1]" 224
Ошибка (активно) E0077 это объявление не содержит класс хранения или спецификатор типа 224
Код:
class Field
{
friend class figure;
public:
static int GetWid()
{
return wid;
}
static int GetHei()
{
return hei;
}
protected:
static const int wid = 10;
static const int hei = 20;
static char field[hei][wid];
};
class Game
{
friend Field;
public:
char Input();
Field::field[1][1] = 'f'; //2 ошибки
private:
};
Перепробывал сделать и статик массив и френд, но никак
Объясните как решить! Спасибо!
Кажется вам пора принимать таблетки.
Дружба позволяет получать доступ к закрытым элементам, но не позволяет нарушать синтаксис языка.
> В поле класса не может находится переменная не принадлежащая этому классу.
template
class Field
{
friend class figure;
public:
static int GetWid()
{
return wid;
}
static int GetHei()
{
return hei;
}
protected:
static char field[wid][hei];
};
template
char Field::field[wid][hei] = {};
template
class Game
{
friend Field;
public:
char Input() {};
Game()
{
Field::field[1][1] = 'f'; //2 ошибки
}
private:
};
Зачем так все усложнять?
Ошибки E0144 и E0077, которые вы получаете, связаны с неправильным использованием синтаксиса и неверными типами данных в вашем коде. Вот как их решить:
1. Ошибка E0144: значение типа "char" нельзя использовать для инициализации сущности типа "int [1][1]"
В строке `Field::field[1][1] = 'f';` вы пытаетесь присвоить значение типа `char` элементу массива `field`, который имеет тип `int [1][1]`. Чтобы исправить эту ошибку, вы должны использовать правильный тип данных. В данном случае, вам нужно присвоить элементу `field` значение типа `int`, а не `char`. Например, `Field::field[1][1] = 5;` или другое целочисленное значение.
2. Ошибка E0077: это объявление не содержит класс хранения или спецификатор типа
Эта ошибка возникает из-за неправильного размещения строки `Field::field[1][1] = 'f';` внутри класса `Game`. Чтобы исправить ошибку, вам нужно поместить эту строку внутрь какого-либо метода класса `Game`, например, в конструктор или в отдельный метод.
Вот пример исправленного кода:
```cpp
class Game
{
friend Field;
public:
char Input();
void SetFieldElement()
{
Field::field[1][1] = 'f';
}
private:
};
// Использование:
Game game;
game.SetFieldElement();
```
Обратите внимание, что вам также может потребоваться исправить другие части вашего кода, если там есть другие ошибки или недочеты.