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

Объявление класс в нескольких файлах - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Unwebo
20 / 20 / 3
Регистрация: 13.04.2012
Сообщений: 38
21.06.2012, 19:54     Объявление класс в нескольких файлах #1
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов?

Хочу создать класс, в котором основной функционал находится в одной паре *.h, *.cpp, а дополнительный в других. Что бы при написании программ можно было подключать нужный мне функционал и не компилировать лишнее.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.06.2012, 20:02     Объявление класс в нескольких файлах #2
Сделайте наследников от него.
cppGhost
32 / 30 / 1
Регистрация: 21.06.2012
Сообщений: 91
21.06.2012, 20:06     Объявление класс в нескольких файлах #3
Вообще не совсем понятны исходные данные. Эти два класса как-то связаны между собой? наследуются от базового? Должны иметь одинаковые имена?

Обычно так делают с dll, то есть имеется набор, например, элементов интерфейса (кнопка, список, дерево и т.п.). Соответственно есть несколько dll: buttonEx.dll, listEx.dll, treeEx.dll. Что используется, то и подключается. Хотя вот именно с элентами интерфейса пример немного надуманный. Все же обычно они лежат в какой-нибудь guiEx.dll

А если нужны классы с одинаковыми именами так можно сделать с использованием пространств имен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace class1
{
    class CSuperClass
    {
        ...
    };
}
 
namespace class2
{
    class CSuperClass
    {
        ...
    };
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.06.2012, 20:09     Объявление класс в нескольких файлах #4
Цитата Сообщение от cppGhost Посмотреть сообщение
А если нужны классы с одинаковыми именами так можно сделать с использованием пространств имен
А зачем разные классы с одинаковыми именами в одном проекте?
Unwebo
20 / 20 / 3
Регистрация: 13.04.2012
Сообщений: 38
21.06.2012, 20:18  [ТС]     Объявление класс в нескольких файлах #5
Класс один.

В файлах file_main.(h/cpp):
C++
1
2
3
4
class CMyClass
{
    CMyClass(); 
};
В файлах file_1.(h/cpp):
C++
1
2
3
4
class CMyClass
{
    Func1();    
};
В файлах file_2.(h/cpp):
C++
1
2
3
4
class CMyClass
{
    Func2();    
};
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.06.2012, 20:20     Объявление класс в нескольких файлах #6
Unwebo, я спрашивал у cppGhost. А вам могу предложить только наследоваться от класса. Неужели он такой большой, что это критично?
cppGhost
32 / 30 / 1
Регистрация: 21.06.2012
Сообщений: 91
21.06.2012, 20:34     Объявление класс в нескольких файлах #7
Насколько я понял в одном проекте они не будут, поэтому и предложил namespace, хотя это уже так, от фантазии. А по сути, идея выглядит как-то надуманно. То есть ТС хочет объявить в основном файле объявить класс, а потом подставлять h и cpp? И при этом реализовать одинаковые по интерфейсу классы, но с разной реализацией?
Finale
13 / 13 / 1
Регистрация: 12.01.2012
Сообщений: 49
21.06.2012, 20:59     Объявление класс в нескольких файлах #8
ТС хочет 1 класс, функционал которого разбит по другим файлам. Для класса уравнений, например, в 1.h функция решает для действительных чисел, а коль числа комплексные то подключаем 2.h.

По-моему, такое можно реализовать с помощью директив препроцессора. Имептся функция-обёртка, принимающая сами параметры, для тоно же уравнения например, и флаг нужной функции для их обработки. Потом по флагу подключаем нужный header и вызываем функцию оттуда.

Проверить возможности нету, медсестра на посту злая, ноутбуки не любит

P.S. Знать не хочу, чем Вас не устраивают классические архитектуры классов, но мне бы и в голову такое не пришло.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.06.2012, 21:10     Объявление класс в нескольких файлах #9
Finale, и как вы себе это представляете? Разбить определение класса на несколько файлов - невозможно. А если функция определена в классе, но не реализована, то компилироваться ничего не будет.

Добавлено через 3 минуты
Пока что приходит в голову только define чего-либо, а затем в хедере ifdef/endif. Но должна быть очень весомая причина, чтобы так изворачиваться.
Jupiter
21.06.2012, 21:17
  #10

Не по теме:

Цитата Сообщение от Finale Посмотреть сообщение
Для класса уравнений, например, в 1.h функция решает для действительных чисел, а коль числа комплексные то подключаем 2.h.
для этого есть шаблоны

sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
21.06.2012, 21:33     Объявление класс в нескольких файлах #11
да вообще это извращенство какое-то
даже если сделать производный класс, то он все равно будет использовать функционал базового, поэтому такое
Цитата Сообщение от Unwebo Посмотреть сообщение
Что бы при написании программ можно было подключать нужный мне функционал и не компилировать лишнее.
не прокатит
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.06.2012, 21:47     Объявление класс в нескольких файлах #12
Цитата Сообщение от sandye51 Посмотреть сообщение
даже если сделать производный класс, то он все равно будет использовать функционал базового
sandye51, разумеется, я предложил такой вариант основываясь на
Цитата Сообщение от Unwebo Посмотреть сообщение
в котором основной функционал находится в одной паре *.h, *.cpp, а дополнительный в других
Finale
13 / 13 / 1
Регистрация: 12.01.2012
Сообщений: 49
21.06.2012, 22:54     Объявление класс в нескольких файлах #13
Jupiter, я думал я достаточно толсто указал, что мой вариант 4fun only, что квадратное уравнение есть пример, а также посоветовал автору отказаться от этой затеи.
Но спасибо за напоминание, да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2012, 11:39     Объявление класс в нескольких файлах
Еще ссылки по теме:

C++ Класс объявление с элементом типа класс Текст
C++ Объявление нескольких функций в head.h
C++ Цикл for, объявление нескольких переменных

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
23.06.2012, 11:39     Объявление класс в нескольких файлах #14
Цитата Сообщение от Unwebo Посмотреть сообщение
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов?
Нельзя. Объявление класса должно быть неразрывным. Реализации методов можешь распихать хоть по тысяче файлов *.cpp
Yandex
Объявления
23.06.2012, 11:39     Объявление класс в нескольких файлах
Ответ Создать тему
Опции темы

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