powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / запись объектов в файл
4 сообщений из 4, страница 1 из 1
запись объектов в файл
    #33101071
Marik_1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
мне надо записать оъекты разных типов в файл:
template<class T>
class ReadWriteToFile
{
private:
T *obj;
public:
ReadWriteToFile(T *);
ReadWriteToFile(T &x);
~ReadWriteToFile(){delete [] obj;}
void writetofile(fstream& );
void readfromfile(fstream&);
void writetoend(fstream&);
void show();

};

template<class T>
ReadWriteToFile<T>::ReadWriteToFile(T *ob)
{
obj=new T;//(ob);
obj=ob;
}
//**************************************
template<class T>
ReadWriteToFile<T>::ReadWriteToFile(T &x)
{
obj=new T(x.ob);
}
//**************************************

template<class T>
void ReadWriteToFile<T>::writetofile(fstream &ot)
{
ot.write(reinterpret_cast<T*>(&obj),sizeof(obj));
}

//*********************************
int main ()
{
char namefile[10];
cout<<"Enter the file name of you file you want to enter the student objs:";
cin>>namefile;
ofstream ot;
ifstream in;
ot.open(namefile,ios::out|ios::binary|ios::ate); //for write and add
assert(ot);
in.open(namefile,ios::out|ios::binary); //for reading
assert(in);
student s1("misha",1,23424);
rrs1.writetofile(ot);

при попытке вызова ф-и rrs1.writetofile(ot);
все время получаю ошибку:

my_program\tar13\tar13.cpp(87) : error C2664: 'writetofile' : cannot convert parameter 1 from 'class std::basic_ofstream<char,struct std::char_traits<char> >' to 'class std::basic_fstream<char,struct std::char_traits<char> > &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Error executing cl.exe.



помогите пожалуйста решить проблему!
...
Рейтинг: 0 / 0
запись объектов в файл
    #33103097
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну во-первых не при попытке вызова, а при попытке трансляции :)
Во-вторых, сравни строки из сообщения об ошибке:
class std::basic_ofstream<char,struct std::char_traits<char> >и
class std::basic_fstream<char,struct std::char_traits<char> >
и увидишь разницу.
...
Рейтинг: 0 / 0
запись объектов в файл
    #33103124
q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
q
Гость
и в третьих, если у сохраняемых объектов есть виртуальные функции, то
такой write(reinterpret_cast<T*>(&obj),sizeof(obj)); метод не годится.
...
Рейтинг: 0 / 0
запись объектов в файл
    #33103178
Кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qи в третьих, если у сохраняемых объектов есть виртуальные функции, то
такой write(reinterpret_cast<T*>(&obj),sizeof(obj)); метод не годится.

Виртуальные не очень страшно, а вот если есть динамические объекты, созданные с помощью new, то труба. Там в тексте других косяков хватает.

template<class T>
ReadWriteToFile<T>::ReadWriteToFile(T *ob)
{
obj=new T;//(ob);
obj=ob;
}

Объект создали, а потом единственный указатель на него изменили. Это же не Java. Сборщик мусора его не удалит.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / запись объектов в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]