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

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

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

Ошибка : слишком много включаемых файлов - C++

28.12.2013, 21:13. Просмотров 446. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Помогите, пожалуйста, исправить ошибку( С1014 слишком много включаемых файлов).
Не знаю, где лишние .h файлы убрать. Вроде они везде нужны, но какая-то цикличность потом получается...

//main

C++
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "Desk.h"
#include "ItemController.h"
 
main(){
...
}
//ItemController.h
C++
1
2
3
4
5
6
#include "Item.h"
class ItemController
{
 ...
    Item *Head,*Current;
};
//ItemController.cpp

C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include "Desk.h"
#include "ItemController.h"
#include "Item.h"
 
Item *Head,*Current;
 
...
// Item.h
C++
1
2
3
4
5
6
7
8
9
10
11
#include "ItemController.h"
#include "Flower.h"
#include "BagItem.h"
class Item : public ItemController
{
public:
    Item *Next;
    Flower *pFlower;
    BagItem *pBagItem;
...
};
// Item.cpp
C++
1
2
3
4
#include "stdafx.h"
#include "ItemController.h"
#include "Item.h"
...
//Flower.h
C++
1
2
3
4
5
#include "Item.h"
class Flower : public Item
{
...
};
//Flower.cpp
C++
1
2
3
4
5
#include "stdafx.h"
#include "Flower.h"
#include "Item.h"
 
...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 21:13     Ошибка : слишком много включаемых файлов
Посмотрите здесь:
C++ Ошибка: слишком много включаемых файлов
слишком много включаемых файлов C++
Fatal error C1014: слишком много включаемых файлов C++
Ошибка "Слишком много аргументов в вызове функции" C++
C++ Ошибка "Слишком много аргументов в вызове функции"
C++ Полиморфизм и ошибка "Слишком много аргументов"
Контроль включаемых заголовочных файлов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
28.12.2013, 21:53     Ошибка : слишком много включаемых файлов #2
Item.h подключает ItemController.h
а ItemController.h подключает Item.h
Для исключения многократного вложения используется такая фишка
Item.h:
C++
1
2
3
4
5
6
#ifndef ITEMH
#define ITEMH
 
// код item.h
 
#endif
и все остальные аналогично
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
28.12.2013, 22:10  [ТС]     Ошибка : слишком много включаемых файлов #3
zss, А теперь, пишет что "не определён базовый класс". (у Flower.h и Item.h) это что-то не так с itemController?
(а та ошибка ушла, Спасибо )
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.12.2013, 22:29     Ошибка : слишком много включаемых файлов #4
C++
1
2
3
4
5
6
#ifndef ITEMH
#define ITEMH
 
// код item.h
 
#endif
вы случайно не везде вот именно эти гуарды воткнули?
для каждого h файла эта штука должна быть уникальна в рамках проекта.
для item.h это ITEMH, для ItemController.h - ITEMCONTROLLERH и т.д.
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
28.12.2013, 22:32  [ТС]     Ошибка : слишком много включаемых файлов #5
DU, Конечно, везде разные.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.12.2013, 22:43     Ошибка : слишком много включаемых файлов #6
возможно дело в рекурсии инклудов. хотя гуарды вроде как должны сработать. но все равно то, что у вас - это криво.
ItemController.h включает Item.h, а Item.h - включает ItemController.h
в Item.h включение ItemController.h обязательно, т.к. в нем наследование от класса ItemController.
А вот в ItemController.h включение Item.h возможно необязательно. Если там только указатели Item*,
то, возможно, проблема полечится если вы сделаете так:


C++
1
2
3
4
5
6
7
8
9
10
//ItemController.h
//#include "Item.h" // было
class Item;           // стало
class ItemController
{
 ...
    Item *Head,*Current;
};
 
// в cpp файле #include "Item.h" еще можно пережить.
С классами Item и Flower, BagItem - та же проблема.
базовый включает инклудники от классов, которые наследуются от базового.
там проблема может так же полечится (использованием декларации и включением нужного h файла в реализации).

Но вообще лучше все перепроектировать. Так, как сделали вы - не делают. Базовые классы обычно
ничего не знаю о своих наследниках.
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
28.12.2013, 22:55  [ТС]     Ошибка : слишком много включаемых файлов #7
DU, вот пытаюсь догадаться, как тут сделать этот полиморфизм, но, похоже, вообще неправильно.
теперь вот такие ошибки появились:
Миниатюры
Ошибка : слишком много включаемых файлов  
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.12.2013, 23:02     Ошибка : слишком много включаемых файлов #8
Это ошибки линковщика. значит компиляция того, что у вас есть прошла успешно.
неразрешенный внешний символ - это не в смысле нельзя использовать, а в смысле не найден.
короче не найдена реализация следующих функций:
Flower::Use()
Item::CreateFlower(int, int)
ItemController::CreateItem(int, int)

убедитесь в том, что они у вас в проекте где-то реализованы, т.е. имеют тело вроде:
C++
1
2
3
4
void Flower::Use()
{
  // ... тут какой-то код
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2013, 23:04     Ошибка : слишком много включаемых файлов
Еще ссылки по теме:
слишком много инициализаторов C++
C++ Слишком много элементов - vector не фурычит
C++ Слишком много знаков в символьной константе
C++ Слишком много символов в константе - объясните ошибку
C++ error C2078: слишком много инициализаторов при создании массива

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

Или воспользуйтесь поиском по форуму:
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
28.12.2013, 23:04  [ТС]     Ошибка : слишком много включаемых файлов #9
DU, Ааа, вот в чём дело. У меня там не все написаны, из-за тех ошибок выше.
Спасибо!
Yandex
Объявления
28.12.2013, 23:04     Ошибка : слишком много включаемых файлов
Ответ Создать тему
Опции темы

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