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

Организация хранения и доступа к объектам разных классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что такое таблица в С++? http://www.cyberforum.ru/cpp-beginners/thread970011.html
Нужно сделать поиск по таблице . Но мне не совсем понятно , что это такое ? Можно ли двумерный массив считать за таблицу ? ( в нём же тоже есть строки , столбцы) или это массив структур ? Подскажите , пожалуйста .
C++ Нужно разобраться с небольшим примером Здравствуйте . Есть такая программа , где два массива записываются в 2 разных файла , потом считываются с него , а далее нужно найти общие элементы этих массивов и записать их в третий массив. int h4={......} int h5={....} Эти массивы записали , вывели с файла. Далее нужно общие элементы записать в массив h3. Нашёл такой пример , но не совсем понимаю , как она работает . int h3; ... http://www.cyberforum.ru/cpp-beginners/thread970004.html
Алфавит C++
You given N and one line of length N (1<=N<=1000)than consist of letter in interval A..Z. Your task is to find out how often each letter from the alphabet is found in the line. First line of your output have to consist of total amount of unduplicated letters. Then your program have to print only the letters that exists in given line in the following format: LETTER COUNT ex : (A 1) The letter...
Цветной текст в С C++
Доброго времени суток. Помогите разобраться, как выделять текст в консоле. Мне надо выделить цветом какой либо элемент массива. Пытался сделать таким способом: #include <windows.h> #include <iostream> using namespace std; int main() { HANDLE hOUTPUT = GetStdHandle(STD_OUTPUT_HANDLE);
C++ Прога для определения наибольшего возрастающего ряда в последовательности цифр http://www.cyberforum.ru/cpp-beginners/thread969940.html
Прога должна запускаться через командную строку, считывать входные данные из одного текстового файла, и записать выходные данные в другой текстовый файл. Сама суть программы в том, чтобы найти в последовательности чисел возрастающий ряд с самым большим количеством его элементов и записать информацию об этом ряде в файл. Если рядов одинаковой длины несколько, то нужно вывести инфу для всех этих...
C++ В чем ошибка? #include<stdio.h> #include<conio.h> int main() {int N, i; float p=1, n=2; scanf("%d", &N); for (i=1; i<=N; i++) {p=p*((n-1)/n); n=n+6;} printf("%f", p); подробнее

Показать сообщение отдельно
rudolf-zaal
0 / 0 / 0
Регистрация: 06.10.2013
Сообщений: 2

Организация хранения и доступа к объектам разных классов - C++

06.10.2013, 10:37. Просмотров 279. Ответов 2
Метки (Все метки)

Всем привет!

Есть класс описывающий структуру и содержание документа Doc. Внутри документ состоит из блоков - таблица, текст, список и тд. Для описания блоков созданы базовый класс Block и производные от него Table, Text, List.

Необходимо организовать хранение блоков в классе Doc и доступ к ним так чтобы выполнялись следующие требования:
  • добавление блоков последовательно
  • вставка блоков в произвольное место (например, вставить текст между двух таблиц)
  • удаление блоков
  • доступ к блоку по указателю полученному при создании блока
  • список блоков может формироваться автоматически при парсинге существующего файла

Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//методы класса Doc
Block* addBlock("тип блока");                       //добавление блока
Block* addBlock("тип блока", int position);     //вставка блока в указанную позицию
 
Doc *doc = new Doc();                          //создали документ
Table *table = doc->addBlock("table");    //добавили таблицу
Text *text = doc->addBlock("text");        //добавили текстовый блок
List *list = doc->addBlock("list");           //добавили список
Table *table2 = doc->addBlock("table", list->getPos); // добавили вторую таблицу перед списком list
 
/*   некий код */
 
//работаем со списком
list->doSomething();
//с таблицей
table2->doSomething();
еще пример:
C++
1
2
3
4
5
6
7
8
9
//методы класса Doc
Block* getBlockById(id);
 
Doc* doc = new Doc(filename);                           // создаем документ и скармливаем ему файл
if(doc){                                                              // если файл нормально прочитался
    Table *table = doc->getBlockById("mytable");  // получаем указатель на таблицу с идентификатором "mytable"
    if(table)                                                         // если таблица нашлась
         table->.......                                             // работаем с ней
}
Подскажите как можно организовать подобное? Первоначально я хранил блоки в векторе
C++
1
std::vector<Block> blocks
с доступом по индексам, но это слишком громоздко(
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru