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

Ответьте новичку - C++

Восстановить пароль Регистрация
 
Variag
1 / 1 / 0
Регистрация: 21.10.2011
Сообщений: 24
Записей в блоге: 1
15.09.2012, 20:22     Ответьте новичку #1
Здравствуйте!
Собственно, есть пара вопросов, на которые я был бы рад получить ответ:
1. Как известно, используя базовые библиотеки С++ (fstream) я могу записать объект класса в бинарный файл. Вопрос: если в классе объявлена статическая переменная, будет ли она записываться в файл вместе с остальными? И если да, то получается, если я запишу в файл несколько объектов одного и того же класса, столько раз в файл запишется статическая переменная?
2. Как я понимаю, из указателей на функции можно составлять массивы. А можно ли указатели на функции запихивать в контейнеры из STL типа vector, list и пр.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 20:22     Ответьте новичку
Посмотрите здесь:

C++ ответьте на вопрос
Кто знает,ответьте) C++
C++ Помощь новичку
Помогите новичку. C++
просто вопросы, ответьте пожалуйста) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
15.09.2012, 20:33     Ответьте новичку #2
Цитата Сообщение от Variag Посмотреть сообщение
используя базовые библиотеки С++ (fstream) я могу записать объект класса в бинарный файл
каким образом вы это собираетесь делать?
а вообще для этой цели надо использовать boost::serialization

Цитата Сообщение от Variag Посмотреть сообщение
А можно ли указатели на функции запихивать в контейнеры из STL
можно
Variag
1 / 1 / 0
Регистрация: 21.10.2011
Сообщений: 24
Записей в блоге: 1
15.09.2012, 20:59  [ТС]     Ответьте новичку #3
каким образом вы это собираетесь делать?
Очень просто:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
class C
{
public:
//методы
private:
//переменные
};
 
int main()
{
C c;
char filename = "test.bin";
ofstream fout(filename, ios::binary);
fout.write((char*) &c, sizeof c);
fout.close();
return 0;
}
Вроде бы так...
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.09.2012, 21:27     Ответьте новичку #4
статическая переменная не будет записана таким макаром. она не является частью объекта, при создании объекта память под нее в нем не выделяется. она хранится совсем в другом месте.
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
15.09.2012, 21:30     Ответьте новичку #5
Цитата Сообщение от Variag Посмотреть сообщение
Очень просто:
абсолютно неправильный подход.
в файл нужно писать интересующие тебя данные, а не скидывать дамп памяти
Variag
1 / 1 / 0
Регистрация: 21.10.2011
Сообщений: 24
Записей в блоге: 1
15.09.2012, 21:54  [ТС]     Ответьте новичку #6
Цитата Сообщение от yekka Посмотреть сообщение
абсолютно неправильный подход.
в файл нужно писать интересующие тебя данные, а не скидывать дамп памяти
Ну тогда объясните, если не сложно, в чем порочность этого метода, а так же расскажите поподробнее о предлагаемом Вами методе.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.09.2012, 23:10     Ответьте новичку #7
Цитата Сообщение от Variag Посмотреть сообщение
Ну тогда объясните, если не сложно, в чем порочность этого метода
Скорее всего, ваш класс не будет являться POD-типом. А копировать побайтово можно только POD-типы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 00:00     Ответьте новичку
Еще ссылки по теме:

C++ Где заказать в нете литературу по OLE,COM......(пожалуйста ответьте кто знает)
C++ Найти сумму ряда с точностью, общий член которого. Ответьте пожалуйста
C++ Подскажите новичку

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2012, 00:00     Ответьте новичку #8
Цитата Сообщение от Variag Посмотреть сообщение
Ну тогда объясните, если не сложно, в чем порочность этого метода
Порочность в том, что непонятно: что сохраняется, и в каком виде.
Перегрузите операцию << в вашем классе для вывода в файл, и пропишите там, что и каким образом записывать в файл. Потом пишите: fout << c;
Yandex
Объявления
16.09.2012, 00:00     Ответьте новичку
Ответ Создать тему
Опции темы

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