Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17

Подключение классов VS

03.02.2020, 18:10. Показов 1674. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день.

Вопрос по поводу правильного подключения заголовочных файлов.

Есть класс Map, который использует другой класс Apple, которому необходимо использовать класс Map.

Заголовочник класса Map:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#pragma once
#include <fstream>
#include <string>
#include <iostream>
#include "Snake.h"
#include "Point.h"
#include "enums.h"
#include "Apple.h"
#include <vector>
 
using namespace std;
 
class Map
{
public:
    int height;
    int width;
    bool go;
    bool gameover;
    char** matrix;
    vector <Snake> snakes;
    vector <Apple> apples;
    Map(const string path);
    ~Map();
    void Show();
    void AddNewSnake(int length, eDirection dir, Point& point);
    int MaxPossibleLength(int length, eDirection dir, Point& point);
    bool IsReachable(int idOfSnake, eDirection dir);
    void DoAct(int idOfSnake, eDirection dir);
    void AddNewApple();
    void AppleIsEated(Point p);
};
Заголовочник класса Apple:
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#include "Map.h"
class Apple
{
 
public:
    Point point;
    Map* map;
    Apple(Map* map);
    void NewApple();
};
список ошибок:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2065 Apple: необъявленный идентификатор 22
Ошибка C2923 std::vector: "Apple" не является допустимым аргументом типа шаблон для параметра "_Ty" 22
Ошибка C1903 не удается восстановить после предыдущих ошибок; остановка компиляции 22

указывают они конкретно на эту строку:
vector <Apple> apples;

Подозреваю что я как-то неправильно использую именно подключение заголовочников класса.
Миниатюры
Подключение классов VS  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2020, 18:10
Ответы с готовыми решениями:

Правильное подключение классов
Добрый день! Имеется два класса, например, Книга и Читатель. Нужно написать метод для класса книга - вывести информацию о читателях....

Подключение классов к проекту
Как сделать, что бы работала описанная в as файле функция. Т.е. Как вызвать функцию в fla файле из as файла

Подключение библиотеки классов
Есть библиотека небольшая using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

2
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.02.2020, 18:39
Лучший ответ Сообщение было отмечено Patrision как решение

Решение

Цитата Сообщение от Patrision Посмотреть сообщение
Подозреваю что я как-то неправильно использую именно подключение заголовочников класса.
C++
1
2
3
4
5
#pragma once
//#include "Map.h"
class Map;
class Apple
{
1
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 17
03.02.2020, 19:46  [ТС]
Теперь в файле реализации выскакивают ошибки:
использование неопределенного типа "Map"
, при каждой встрече указателя на экземпляр Map.

Код реализации класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "Apple.h"
#include <stdlib.h>
 
class Map;
Apple::Apple(Map* map)
{
    this->map = map;
    do
    {
        point.X = 1 + rand() % (map->width - 2);
        point.Y = 1 + rand() % (map->height - 2);
    } while (map->matrix[point.Y][point.X] != NONE);
}
 
void Apple::NewApple()
{
 
    Point point;
    do
    {
        point.X = 1 + rand() % (map->width - 2);
        point.Y = 1 + rand() % (map->height - 2);
    } while (map->matrix[point.Y][point.X] != NONE);
    this->point = point;
}
Добавлено через 39 минут
Решил проблему данной правкой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "Apple.h"
#include "Map.h"// добавленная строчка
#include <stdlib.h>
 
Apple::Apple(Map* map)
{
    this->map = map;
    do
    {
        point.X = 1 + rand() % (map->width - 2);
        point.Y = 1 + rand() % (map->height - 2);
    } while (map->matrix[point.Y][point.X] != NONE);
}
 
void Apple::NewApple()
{
 
    Point point;
    do
    {
        point.X = 1 + rand() % (map->width - 2);
        point.Y = 1 + rand() % (map->height - 2);
    } while (map->matrix[point.Y][point.X] != NONE);
    this->point = point;
}
если есть какие-то замечания, прошу, пишите. Но тема вобщем-то закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2020, 19:46
Помогаю со студенческими работами здесь

Подключение собственных классов
Здравствуйте, пользователи форума. Долго искал в интернет ответ на свой вопрос, но ничего так и не заработало. тему...

Подключение пользовательской библиотеки классов
На прологе написал длл, для простоты она просто генерирует какое либо число global predicates procedure easy(integer) - (o)...

Подключение классов вместо require
Здаствуйте, подскажите пожалуйста как подключать php класы к отдельным файлам, к примеру в проекте есть папочка сlassec к которой есть...

Динамическое подключение классов из jar-файла
Как подключить класс к программе во время исполнения не из распакованного класса, а из файла .jar (кроме как напрямую распаковать:))

Apache Tomcat, подключение классов к сервлету
У меня в папке WEB-INF находится класс. Как его подключить к сервлету во время исполнения через class.forName(путь)? Например используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименование-ю группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника 1С по перечислениям
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru