|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.10.2012, 17:48 | #1 |
Регистрация: 01.10.2012
Сообщений: 4
|
Класс для работы с файлами (visual c++)
День добрый. Столкнулся со следующей проблемой.
Задание: создать класс, инкапсулирующий работу с файлами через стандартную библиотеку С(fopen,fclose и т.д.). Реализовать методы открытия, закрытия, записи для double,int, записи в текстовом и двоичном виде. Собственно, написал следующий код (тут описаны еще не все методы): Код:
Error3 error LNK2019: unresolved external symbol "public: __thiscall Files::~Files(void)" (??1Files@@QAE@XZ) referenced in function _main В чем конкретно моя ошибка? Подскажите, как правильно задать конструктор и методы. |
02.10.2012, 17:59 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
У вас нет кода деструктора, вот linker и ругается. Декларация есть, дефиниции нету.
Кроме того, обратите внимание на ваш метод Open - несколько странно получать в качестве аргумента копию класса Files. В результате у вас будут два объекта Files указывающие на один и тот же FILE |
02.10.2012, 22:22 | #3 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
void Files::Open(Files f)
для функций. описанных внутри класса, раз его приписывать не нужно. функция Open - плохая. Получает объект типа File, а должна имя файла char* Files::GetName() возвращает не-константный указатель, сама функция также не константная. фтопку. отсутствую переопределенный оператор присваивания, конструктор копии. в итоге класс нежизнеспособен. для примера залезь в исходники MFC и укради оттуда класс CFile
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
05.10.2012, 08:23 | #4 | ||
Регистрация: 01.10.2012
Сообщений: 4
|
Цитата:
Цитата:
У меня в итоге получается так(фрагмент метода и работы с ним): Код:
Код:
|
||
05.10.2012, 09:55 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
1) Зачем вам аргумент на клас Files в методе класа Files?
2) Copy constructor вам не нужен пока, потому что у вас нет деструктора. Обычно деструктор закрывает файл. Если он у вас появится БЕЗ copy constructor и assignment operator то у вас будут ДВА (а то и более) деструктора, которые будут пытаться закрыть один и тот же файл. |
06.10.2012, 19:37 | #6 | ||
Регистрация: 01.10.2012
Сообщений: 4
|
Цитата:
Цитата:
И деструктор у меня есть. Программа работает корректно (по крайней мере делает то, что должна: записывает нужные данные в файл). |
||
06.10.2012, 20:58 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Значит ваш деструктор не закрывает файл...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Класс для работы с массивом в С++. | ALEX8989 | Помощь студентам | 2 | 15.04.2012 19:18 |
Класс для работы с массивом.С++ | bender91 | Помощь студентам | 2 | 14.04.2012 21:32 |
класс для работы с деревьями | CodeNOT | C++ Builder | 1 | 19.05.2011 22:23 |
Написать класс для работы с двоичными числами в Visual C++ 2008 | Maxs | Фриланс | 1 | 23.12.2009 21:07 |