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

Вывод в файл и последующее чтение из файла объектов класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Цикл: вычислить значение выражения по заданной формуле http://www.cyberforum.ru/cpp-beginners/thread565075.html
Написать программу, в которой используется три вида операторов цикла для вычисления: вот она...помогите кто-нибудь... у меня ответ выдаёт немного неправильный#include <stdio.h> #include <conio.h> #include <math.h> void main () { int i=0, n;
C++ win API:найти информацию о логических дисках. Определить типы логических дисков, обьём диска, колличество секторов в клястере, тип драйвера. http://www.cyberforum.ru/cpp-beginners/thread565070.html
Ищу простую и документированную библиотеку для рисования простых(2D, линейных) графиков C++
Собственно весь вопрос в название темы. Ищу простую и документированную библиотеку для рисования простых(2D, линейных) графиков, желательно чтобы можно было без лишних проблем подключить к проекту в VS. Такие вообще есть? Собственные поиски и неудачи кидают в пучины отчаяния, ибо ничего даже похожего на график скорости в том-же µTorrent'е найдено не было... Прошу помощи!
Вычисление сумм С++ C++
для заданного натурального n рассчитать сумму S=cos1-cos2+cos3-...+(-1)^n+1cosn заранее спасибо
C++ Утечка памяти (Expression: _CrtIsValidHeapPointer(pUserData)) http://www.cyberforum.ru/cpp-beginners/thread565050.html
Добрый вечер всем. Столкнулся с такой проблемой. Запускаю программу, открываеться пустая консоль, увеличиваеться употребление оперативной памяти для программы и викидает такую ошибку: Вот код проекта: .h #pragma once class HeatingSystem { public:
C++ Дано целое число в диапазоне 10–40 Дано целое число в диапазоне 10–40, определяющее количество учебных заданий по некоторой теме. Вывести строку-описание указанного количества заданий, обеспечив правильное согласование числа со словами «учебное задание», например: 18 — «восемнадцать учебных заданий», 23 — «двадцать три учебных задания», 31 — «тридцать одно учебное задание». подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517

Вывод в файл и последующее чтение из файла объектов класса - C++

04.05.2012, 01:43. Просмотров 1515. Ответов 5
Метки (Все метки)

Как наиболее правильно и канонично выводить (так чтобы потом ещё и прочитать) объекты классов в файл?
Представим ситуацию:
Есть класс A, от него унаследован класс B и класс C.
Есть функция, которая принимает список объектов А, В и С (вперемешку).
Есть функция, задача которой считать из файла объекты А, В и С (и не перепутать что где) и вернуть список этих объектов.

Как это лучше всего реализовать?
Классы A, B и C пускай будут простенькие. Хоть бы вот такие:
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
38
39
40
41
42
43
44
45
46
47
48
class A
{
public:
    A(int _x)
    :x(_x){}
 
    virtual void fun()
    {
        cout<<x<<"\t";
    }
 
private:
    int x;
};
 
class B: public A
{
public:
    B(int _x, int _y)
    :A(_x), y(_y){}
 
    virtual void fun()
    {
        cout<<"B"<<"\t";
        A::fun();
        cout<<y<<endl;
    }
 
private:
    int y;
};
 
class C: public A
{
public:
    C(int _x, char _c)
    :A(_x), c(_c){}
 
    virtual void fun()
    {
        cout<<"C"<<"\t";
        A::fun();
        cout<<c<<endl;
    }
 
private:
    char c;
};
Приведите пример как ЛУЧШЕ ВСЕГО организовать вывод в файл и чтение из файла объектов моих А, В и С.

Добавлено через 31 минуту
Тоесть вся сложность в том что мы заранее не знаем что записано в файл, посему не знаем сколько байт читать и когда у нас один объект закончился, а начался другой ...
Дописал ещё прототипы функций, а также main если кто захочет поэкспериментировать чтобы помочь:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
class A
{
public:
    A(int _x)
    :x(_x){}
 
    virtual void fun()
    {
        cout<<x<<"\t";
    }
 
private:
    int x;
};
 
class B: public A
{
public:
    B(int _x, int _y)
    :A(_x), y(_y){}
 
    virtual void fun()
    {
        cout<<"B"<<"\t";
        A::fun();
        cout<<y<<endl;
    }
 
private:
    int y;
};
 
class C: public A
{
public:
    C(int _x, char _c)
    :A(_x), c(_c){}
 
    virtual void fun()
    {
        cout<<"C"<<"\t";
        A::fun();
        cout<<c<<endl;
    }
 
private:
    char c;
};
 
struct Block
{
    Block(A* what)
    :obj(what), next(NULL){}
 
    A* obj;
    Block* next;
};
 
void outToFile(Block* list)
{
    while(list)
    {
        
    }
}
 
Block* readFromFile(ofstream& file)
{
 
}
 
 
int main()
{
    A a(1);
    B b(2,2);
    C c(3,'c');
 
    Block* simpleList= new Block(&c);
    simpleList->next= new Block(&b);
    Block* tail= simpleList->next;
    tail->next= new Block(&a);
    outToFile(simpleList);
}
Добавлено через 17 минут
Допустимо дописывать что угодно и делать как угодно, лишь бы выполнить задачу ...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru