Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Illko
1 / 1 / 0
Регистрация: 25.05.2015
Сообщений: 32
#1

Cross referencing - проблема с include'ами - C++

03.10.2016, 12:12. Просмотров 145. Ответов 5
Метки нет (Все метки)

Допустим есть класс one и есть класс two. Оба эти класса нуждаются друг в друге, но если подключить в первый класс второй, а во второй класс первый, то будет ошибка. Так как правильно подключать эти файлы друг к другу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2016, 12:12     Cross referencing - проблема с include'ами
Посмотрите здесь:

Cross referencing - проблема с include'ами - C++
Имеются 2 класса: #include "Base.h" #include "SiteAnalyzer.h" Бейз подключается в аналайрезе, а аналайзер в свою очередь...

Проблема с #include - C++
Проект состоит из нескольких классов, каждый из которых реализован в своём модуле. Есть Главный класс и Дочерний класс, экземпляр...

#include "StdAfx.h" и проблема цикал в компиляторе - C++
#include "StdAfx.h" #include <iostream> #include <fstream> using namespace std; int main() {

Чем отличается #include <cstring>, #include <string> и #include <string.h>? - C++
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда подключаю #include &lt;string&gt; все что мне...

ошибка в лабе не находит #include<iomanip.h> #include<conio.h> - C++
Само задание: Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в месяц-C руб. а разговоры сверх...

Какая разница между #include<> и #include""? - C++
Позволите спросить несколько вопросов: 1)Какая разница между #include&lt;&gt; и #include&quot;&quot; 2)Если нужно значение объекта и я не собираюсь его...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ture
438 / 331 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
03.10.2016, 12:15     Cross referencing - проблема с include'ами #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Надо отделить описание класса от его определения (в определение обычно текст модулей методов) и подключать описание. Можно указать так:
C++
1
class Name;
И это уже позволит использовать имя класса как тип.
Illko
1 / 1 / 0
Регистрация: 25.05.2015
Сообщений: 32
03.10.2016, 17:14  [ТС]     Cross referencing - проблема с include'ами #3
Сделал все так, как вы говорили, но проблема всё-равно та сама.
Кликните здесь для просмотра всего текста

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
33
34
35
36
37
38
39
40
#include "Creature.h"
class GameMap; //Вот подключаю
 
void Creature::MoveTo(Direction dir, GameMap Map) { //Вот тут пишет "Ошибка: недопустимый неполный тип"
    if (isMoving == true)                                      //когда навожу на "GameMap"
        return;
 
    int x = _x / 32,
        y = _y / 32;
 
    Map.SetLay1Element(x, y, Textures::Void);
    switch (dir) {
    case Direction::Down: {
        if (Map.GetLay1Element(x, y + 1) > 5) {
            isMoving = true;
            direction = dir;
        }
    }break;
    case Direction::Up: {
        if (Map.GetLay1Element(x, y - 1) > 5) {
            isMoving = true;
            direction = dir;
        }
    }break;
    case Direction::Left: {
        if (Map.GetLay1Element(x - 1, y) > 5) {
            isMoving = true;
            direction = dir;
        }
    }break;
    case Direction::Right: {
        if (Map.GetLay1Element(x + 1, y) > 5) {
            isMoving = true;
            direction = dir;
        }
    }break;
    default: break;
    }
 
}
ture
438 / 331 / 123
Регистрация: 27.11.2014
Сообщений: 1,038
03.10.2016, 17:27     Cross referencing - проблема с include'ами #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Illko, так хорошо, есть заголовок, есть
C++
1
class GameMap; //Вот подключаю
Теперь нужно заменить это на
C++
1
#include "GameMap.h"
чтоб компилятор уже мог не просто принять типы в прототипе методов, но и переварить вот такие вызовы
C++
1
Map.SetLay1Element(x, y, Textures::Void);
Если хочешь, то кидай остальные файлы.
nd2
2136 / 1708 / 601
Регистрация: 29.01.2016
Сообщений: 5,508
03.10.2016, 23:58     Cross referencing - проблема с include'ами #5
Illko, защита от повторных включений в .h файлах есть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2016, 03:40     Cross referencing - проблема с include'ами
Еще ссылки по теме:

Работа с class-ами(вывести на дисплей) - C++
создать вектор из фигур и вывести их на печать с помощью класса GROUP_OBJECT что уже реализовано #include &lt;iostream&gt; #include...

Кто-нибудь работал со cмарт-картами и card-reader'ами ??? - C++
Кто-нибудь работал со cмарт-картами и card-reader'ами ??? С какого конца за них браться. :))) Подскажите ссылки по этой теме Может...

Работа с class ами. Заполнение дин. массива типа class - C++
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

INCLUDE - C++
Подскажите что обозначаеть include . #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #include &lt;crypt.h&gt; #include...

Include - C++
Вот давно хотел разобраться. Вот допустим есть у меня 6 файлов A.h A.cpp ,B.h B.cpp ,C.h C.cpp , в каждом h файле описан класс , а в cpp...

#include в C++ - C++
Здраствуйте, скажите пожалуйсто какие #include являются основными, я открыл папку include у себя в компелятори, там кучи файлов, все...


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

Или воспользуйтесь поиском по форуму:
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3710 / 1985 / 516
Регистрация: 18.10.2014
Сообщений: 3,567
04.10.2016, 03:40     Cross referencing - проблема с include'ами #6
Цитата Сообщение от Illko Посмотреть сообщение
Допустим есть класс one и есть класс two. Оба эти класса нуждаются друг в друге, но если подключить в первый класс второй, а во второй класс первый, то будет ошибка. Так как правильно подключать эти файлы друг к другу?
1. Сначала разобраться, зачем эти файлы нужно включать друг в друга.
2. Потом, в зависмости от результатов 1, волевым решением отказаться от одного из включений. Заменить его предварительными объявлениями элементов невключенного заголовочного файла.

Без конкрентного описания ситуации говорить более конкретно трудно.
Yandex
Объявления
04.10.2016, 03:40     Cross referencing - проблема с include'ами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru