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

Сложности с построением многофайлового решения - C++

Восстановить пароль Регистрация
 
 
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67
26.03.2014, 20:33     Сложности с построением многофайлового решения #1
Есть 3-и класса. Каждый в файле. Не смотрите что реализация в h-ке, это просто чтобы было проще и удобнее понимать. Ошибка построения в итоге такая же, если даже разделить объявление и определение. Все это дело не строиться. Лучше приведу код.

SubscribersList
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
 
#include "SystemBase.h"
#include "Entity.h"
 
namespace Engine {
 
    class SubscribersList {
        friend SystemBase;
 
    public:
        SubscribersList() { }
 
        void f(Entity* e) { }
    };
}
Entity.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
 
#include "SystemBase.h"
 
namespace Engine {
 
    class Entity {
    public:
        Entity() { }
 
        void s(SystemBase* sb) { }
    };
 
}
SystemBase
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
#include "SubscribersList.h"
#include "Entity.h"
 
namespace Engine {
 
    class SystemBase {
    public:
        SystemBase() { }
 
        void g(Entity* e) { }
 
    private:
        SubscribersList m;
 
    };
}
Некоторые условия изменения кода если кто будет менять. После friend слово class не ставить, ибо он уже был описан и подключен соответствующим файлом. Должно работать так. Если убрать все упоминания про Entity, то как раз так и работает.
Это все билдится если
1 Затолкать в один файл.
2 Перед неопределенными для компилятора типами (Entity, SystemBase) поставить class. Однако все потом опять валится как только пытаешься вынести реализацию в cpp.
VS 2010.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 20:33     Сложности с построением многофайлового решения
Посмотрите здесь:

Сложности с кодом C++
C++ создание многофайлового проекта в Borland 5.02
Метод вращений с построением КЮЭР-разложения C++
совсем запуталась с построением( C++
Сборка многофайлового приложения: ошибка LNK2005 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67
27.03.2014, 00:22  [ТС]     Сложности с построением многофайлового решения #21
Не прокатило с удалением #include "System.h" из SubscribersList.h. Та же ошибка. Уже заменил указателем.

А нет. Заработало. Там же еще Entity был подключен в котором был System
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
27.03.2014, 00:25     Сложности с построением многофайлового решения #22
Цитата Сообщение от Rengen Посмотреть сообщение
Не прокатило с удалением #include "System.h" из SubscribersList.h.
там еще с namespace чейто накручено, я запутался
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67
27.03.2014, 00:30  [ТС]     Сложности с построением многофайлового решения #23
Цитата Сообщение от ValeryS Посмотреть сообщение
там еще с namespace чейто накручено, я запутался
Просто чтобы не переклекнуться с чем-нибудь из std и прочих headerов. У меня есть System. В std возможно тоже есть. На всякий случай затолкал туда.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
27.03.2014, 00:41     Сложности с построением многофайлового решения #24
Цитата Сообщение от Rengen Посмотреть сообщение
Просто чтобы не переклекнуться с чем-нибудь из std и прочих headerов.
так это я понял
я не могу врубится как ты это реализовал, в трех классах
Цитата Сообщение от Rengen Посмотреть сообщение
namespace Engine {
может в этом загвоздка
честно говоря, я никогда не нарывался на перекрытия имен, и поэтому по серьезному с namespace не работал

Добавлено через 50 секунд
Цитата Сообщение от Rengen Посмотреть сообщение
У меня есть System.
обзови ESystem или MySystem
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67
27.03.2014, 07:30  [ТС]     Сложности с построением многофайлового решения #25
namespace - достаточно распространенная практика, на сколько я знаю. Наверно больше в C#, хотя С++ это появилось все же раньше, ибо он раньше C#, как раз, чтобы решить проблему коллизий имен.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
27.03.2014, 07:38     Сложности с построением многофайлового решения #26
Rengen,
А зачем ты мне это рассказываешь?
я знаю зачем это придумано
Я не могу разобраться в твоей реализации
что то меня смущает
Пущай знающие люди скажут
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 15:02     Сложности с построением многофайлового решения
Еще ссылки по теме:

C++ Беда с наследованием. Организация многофайлового приложения
Работа многофайлового проекта C++
Компиляция и сборка многофайлового проекта C++

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

Или воспользуйтесь поиском по форуму:
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67
27.03.2014, 15:02  [ТС]     Сложности с построением многофайлового решения #27
Цитата Сообщение от ValeryS Посмотреть сообщение
А зачем ты мне это рассказываешь?
Что-то я действительно как-то... Зачем. В общем, спасибо за помощь.
Yandex
Объявления
27.03.2014, 15:02     Сложности с построением многофайлового решения
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru