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

Создание дерева в родительском классе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Генератор судоку http://www.cyberforum.ru/cpp/thread90576.html
Маленькая проблемка с программой - в одном из 10 случаев программа зависает. Кому не сложно, прошу проверить и исправить. Вот полный работающий код: #include <iostream> #include <cstdlib> using namespace std;
C++ Работа с файлами тут две задачи по массивам)) подскажите почему не работают и как сделать так чтобы в файле ввсё это было(файл читал массивы, на первой строке в файле кол-во элементов, а на второй элементы). #include<iostream.h> using namespace std; int main() { const int n=5; int mas={12,3,14,21,12}, i; for(i=n-1; mas!=0 && i>=0; i--) http://www.cyberforum.ru/cpp/thread90549.html
C++ Новый стандарт с++
В 2009 году должен быть выйти новый стандарт. Хотелось бы узнать какие новшевства он принес в язык. Стал язык удобнее или нет. И какие компиляторы уже на данный момент поддерживают этот стандарт. P.S. Гугл не дал никаких убедительных ответов на вопросы.
С++ vs. Visual Studio C++! C++
В чем разница между C++ и Visual Studio C++??
C++ Открытие wav файла http://www.cyberforum.ru/cpp/thread90094.html
Здравствуйте. мне надо открыть музыкальный файл формата wav и считать информацию в массив из блока data. написала начало функции. но не работает. не находит блоки wav и data вообще. вот программа. что не так? WAVEFORMATEX* wfx; // Указатель на объект структуры WAVEFORMATEX HMMIO m_hmmioIn; // Мультимедийный дескриптор файла MMCKINFO m_ckIn; // Инфоромация о вложенном блоке формата...
C++ Удаление инфы из дискового файла Есть файл. Этот файл читается и пишется как типизированный (подозреваю, что к делу это не относится), то есть в качестве указателя на буфер юзится указатель на структуру. Надо из файла удалить одну запись. Как это сделать без использования временного файла ? подробнее

Показать сообщение отдельно
Observat
0 / 0 / 0
Регистрация: 29.01.2010
Сообщений: 5
03.02.2010, 11:55  [ТС]     Создание дерева в родительском классе
Данные хранятся на сервере в виде дерева(типа XML, "файловая система, где каталог - полноценный файл с данными", LDAP). В разных ветвях встречаются разные вещи.
Мы знаем узел, начиная от которого идут нужные данные, но внутренняя структура нам неизвестна. Поэтому для загрузки данных используем некий обобщенный метод; создаем класс А.
Каждый узел содержит атрибуты. Некоторые из них мы не используем, некоторые только читаем, другие можем редактировать/удалять/создавать. Мы можем также скрывать некоторые узлы, которые нельзя использовать. Для разных вещей(загруженных деревьев) узлы, атрибуты и их чтение/редактирование/использование/контроль могут отличаться. Создаются классы B1-Bn. Некоторые методы (или их части) одинаковые или их можно сделать одинаковыми без потерь. Такие методы выносим в класс А.
Класс А не может самостоятельно обрабатывать данные, поэтому сделаем его абстрактным.
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
class A
{
public:
    A(char*/string/QString  str) {  loadTree(str);  }
    loadTree(char* root)
    {
        // заполнение данными c сервера
        // Рекурсивно заполняется vector<A*>;
//!    // но объектами (точнее указателями на созданные объекты)
//!    // не типа А, а типа Bx, который и вызвал конструктор класса А
    }
    void method1() =0;
    int method2() =0;
protected:
    ... // данные-атрибуты
    vector<A*>;
};
 
class B1 : public A
{
public:
    B1(char * root) : A(root) {}
    void method1() { ... }
    int method2() { ... }
protected:
// данных нет, они все в классе А
// могут быть только вспомогательные
};
 
void main()
{
  A* mas[2];
  mas[0] = new B1("qwerty");
  mas[1] = new B2("asd");
    ...
    mas[k]->method1();
}
Как сделать то , что отмечено "//!" ?

P.S. Неразвернутая по полочкам задача:
Клиент для LDAP-сервера для удобного добавления/редактирования DHCP, DNS, mail. Сейчас сделано по варианту 2 из первого поста, хочу сделать рефакторинг.
 
Текущее время: 23:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru