Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с кодом С++ проблема инициализации классов.

Щарящий Челик Ученик (221), открыт 2 часа назад

Не получается инициализировать класс и обратиться к нему. Выдает такие ошибки что они могут значить? и как исправить. Я совсем новичок так что не откажусь от консультации. Могу дс дать
Дополнен 1 час назад
я могу выше перенести но не будут работать обращения в другом классе. как сделать так чтобы они сообщались друг с другом? или тип того. Совмещать их мне не очень хочется....
4 ответа
Ярослав Кононов Ученик (159) 2 часа назад
Вот ты новичку, а я вообще не знающий
Ярослав КононовУченик (159) 2 часа назад
Удачи разобраться
Щарящий ЧеликУченик (221) 2 часа назад
а зач ты ответил)))
Ярослав Кононов Ученик (159) Щарящий Челик, да так, по приколу, мне делать нефиг на самое шарусь
Андрей Знаток (493) 1 час назад
Класс выше нужно располагать
Щарящий ЧеликУченик (221) 1 час назад
у меня из него тоже обращения идут. если так сделаю то не будет другое работать
Щарящий ЧеликУченик (221) 1 час назад
может можно как то в виде ссылки сделать? чтобы классы могли сообщаться друг с другом. такое возможно?
Андрей Знаток (493) Щарящий Челик, это нужно делать класс дружественным
GGG Просветленный (27731) 1 час назад
Судя по скриншотам, проблема в том, что ты пытаешься использовать переменные Game_Menu и GM до их объявления. Компилятор C++ читает код сверху вниз, поэтому он должен "знать" о существовании переменной, прежде чем ты начнёшь её использовать.
Вот что тебе нужно сделать:
Объяви переменные Game_Menu и GM перед тем, как использовать их в функции RasstavlenieKorablei. Объявление должно соответствовать типу классов, которые ты определил (class Game_Menu и class firing). Например:
 Game_Menu Game_Menu; // Создаём объект класса Game_Menu 
firing GM; // Создаём объект класса firing

for (int i = 1; i < kol; i++){
// ... твой код ...
GM.EnemyFerryPole(ABC, poleB, sizeY, sizeY);
// ... твой код ...
}
Убедись, что классы Game_Menu и firing видны в функции RasstavlenieKorablei. Если эти классы определены в другом файле, тебе нужно подключить этот файл с помощью директивы #include. Если классы определены в том же файле, но после функции RasstavlenieKorablei, ты можешь добавить forward declaration:
 class Game_Menu; // Forward declaration класса Game_Menu 
class firing; // Forward declaration класса firing

void RasstavlenieKorablei(int kol, string poleC[10], string pole[10][10], char ABC[10], int sizeX, int sizeY){
// ... твой код ...
}
Что означают ошибки?
C2065: "имя_переменной": необъявленный идентификатор - Эта ошибка говорит о том, что компилятор не знает о существовании переменной с таким именем.
C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "имя_переменной" - Эта ошибка, скорее всего, возникает из-за того, что компилятор пытается интерпретировать GM как что-то другое (например, тип данных), так как он не знает, что это переменная.
Как сделать, чтобы классы "сообщались" друг с другом?
Классы могут взаимодействовать друг с другом через:
public методы: определяй методы в классах, которые будут доступны из других частей программы. Например, в классе Game_Menu может быть метод get_player_input(), который будет вызывать класс firing для обработки ввода пользователя.
передачу объектов в качестве параметров: ты можешь передавать объекты одного класса в методы другого класса.
наследование: один класс может наследовать свойства и методы другого класса.
Щарящий ЧеликУченик (221) 1 час назад
спасибо за развернутый ответ!
Николай Веселуха Высший разум (364467) 34 минуты назад
 #include  

using namespace std;

class Any {
public:
Any() : data(0) {}
void set(const int data) {
this->data = data;
}
int get() const {
return data;
}
private:
int data;
};

int main() {
Any any;
any.set(10);
const auto data = any.get();
cout << "data: " << data << '\n';
cin.get();
}
Щарящий ЧеликУченик (221) 17 минут назад
че?
Похожие вопросы