The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Теоретический вопрос"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Теоретический вопрос" 
Сообщение от Михаил Искать по авторуВ закладки(??) on 29-Мрт-05, 17:26  (MSK)
Есть у нас один из базовых классов
например такой

class base_class
{
public:
. много всяких открытых функций
.
.
private:
class sublclass
{
....
};
vector<subclass> j;
};

Всем клиетам знать про vector и subclass ничего не надо, как бы сделать так что бы он не инклудил в себя "vector" и не надо было описывать subclass в заголовочном файле (Просто это занимет кучу времени при компиляции и перегружает заголовочный файл бесполезной информацией)

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Теоретический вопрос" 
Сообщение от sev emailИскать по авторуВ закладки(??) on 30-Мрт-05, 14:33  (MSK)
Обычно делают так:

содержимое файла myVector.h
class sublclass
{
....
};
typedef vector<subclass> TMyVector;
};

содержимое файла baseClass.h

class TMyVector;  // обращаю внимание отсутствует #include "myVector.h"

class base_class
{
....
private:
   TMyClass* j;
};


содержимое файла baseClass.cpp

#include "myVector.h"

// реализация методов класса

base_class::method1 (){
// сдесь можно использовать j-> ....
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Теоретический вопрос" 
Сообщение от Михаил Искать по авторуВ закладки(??) on 31-Мрт-05, 12:11  (MSK)
Спасибо все работает, я только без второго хедера обошелся (все в c описал)
а как бы еще отделаться от указателя? мне кажется никак.

>class base_class
>{
>....
>private:
>   TMyClass* j;
>};
>

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Теоретический вопрос" 
Сообщение от Михаил Искать по авторуВ закладки(??) on 31-Мрт-05, 17:33  (MSK)
нет не работает, вот что говорит


timer_manager.cpp:77: error: conflicting types for `typedef class
   std::vector<eng::alarm_data, std::allocator<eng::alarm_data> >
   eng::alarms_type'
timer_manager.h:38: error: previous declaration as `struct eng::alarms_type'


>Обычно делают так:
>
>содержимое файла myVector.h
>class sublclass
>{
>....
>};
>typedef vector<subclass> TMyVector;
>};
>
>содержимое файла baseClass.h
>
>class TMyVector;  // обращаю внимание отсутствует #include "myVector.h"
>
>class base_class
>{
>....
>private:
>   TMyClass* j;
>};
>
>
>содержимое файла baseClass.cpp
>
>#include "myVector.h"
>
>// реализация методов класса
>
>base_class::method1 (){
>// сдесь можно использовать j-> ....
>}


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру