Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 08.09.2012
Сообщений: 35
1

Передача указателя на файл в метод

16.10.2012, 22:17. Просмотров 993. Ответов 9
Метки нет (Все метки)

Доброго вечера всем. Такая проблема: C++ Builder ругается на строку в описании класса, пример под катом
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
class OwnThing
{
        char    *title;
        char    *type;
        int     age;
        float   weight;
public:
                OwnThing();
                OwnThing(char*, char*, int, float);
                OwnThing(OwnThing&);
                OwnThing(char*);
virtual         ~OwnThing();
        void    SetTitle(char*);
        char*   GetTitle();
        void    SetType(char*);
        char*   GetType();
        void    SetAge(int);
        int     GetAge();
        void    SetWeight(float);
        float   GetWeight();
virtual void    Output();
virtual void    Input();
virtual void    SaveToFile(FILE*);    //вот в этих строках
virtual void    LoadFromFile(FILE*);  //ругается, ошибка после FILE*: ')' expected 
};
Метод должен записать(считать) текущий объект в файл, открытый заранее и переданный в этот метод.
С любыми другими типами проходит, только не с этим. Наверно, слона-то я и не заметил, подтолкните к ответу, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 22:17
Ответы с готовыми решениями:

Передача указателя на метод в функцию
Подскажите плиз. Есть некий класс и в нём метод: ... DWORD WINAPI func(LPVOID lParam) {...

Передача в метод по перегрузке оператора указателя на объект
У нас есть массив указателей на базовый класс STRING **ptr = new STRING* ; for (int i = 0;...

Передача функции указателя на метод класса и его объекта для вызова
std::thread позволяет в качестве исполняемой функций принимать метод класса и указатель на его...

Как сделать функцию от указателя на класс и указателя на метод?
Не получается сделать функцию, параметрами которой являются указатель на класс и на метод....

9
595 / 563 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
16.10.2012, 23:28 2
Цитата Сообщение от alex.gorbach Посмотреть сообщение
C++ Builder ругается на строку в описании класса
C++
1
#include <cstdio>
и вообще зачем использовать с++ вместе с си-шной конструкцией? чем вам не нравится istream?

Добавлено через 1 минуту
C++
1
virtual void    LoadFromFile(istream& in);
теперь можно хоть с клавиатуры считывать, хоть с файла или еще какого-нибудь потока

Добавлено через 1 минуту
А еще лучше сделать так
C++
1
virtual void    LoadFromFile(string& filename);
а уже в методе открыть файл и загрузить данные
0
0 / 0 / 1
Регистрация: 08.09.2012
Сообщений: 35
16.10.2012, 23:30  [ТС] 3
panicwassano, на плюсплюс с Си недавно перешел, вот и использую, как привык. Попробую с входным потоком, как вы сказали. Насчет передачи имени файла - я думал, но если в цикле 100 объектов записывать, не будет ли грузнее 100 раз открывать-закрывать файл?
0
595 / 563 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
16.10.2012, 23:35 4
а зачем вам 100 объектам открывать один и тотже файл, где здесь логика?
0
0 / 0 / 1
Регистрация: 08.09.2012
Сообщений: 35
16.10.2012, 23:37  [ТС] 5
panicwassano, мне нужно записать в один файл объект класса-коллекции объектов этого класса.
0
595 / 563 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
16.10.2012, 23:42 6
как вариант для файла написать обертку в виде синглтона и вызывать в каждом объекте

Добавлено через 11 секунд
ну либо просто ссылку на открытый поток передайте
0
0 / 0 / 1
Регистрация: 08.09.2012
Сообщений: 35
17.10.2012, 00:07  [ТС] 7
panicwassano, сделал, как вы сказали, через входной поток ifstream, ошибка в том же месте, та же:
C++
1
2
3
4
...
virtual void    SaveToFile(ifstream&);
virtual void    LoadFromFile(ofstream&);
...
0
2820 / 1630 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
17.10.2012, 00:16 8
iostream или iosfwd подключил?

Добавлено через 1 минуту
Да, и они ещё пространстве имён std.
0
0 / 0 / 1
Регистрация: 08.09.2012
Сообщений: 35
17.10.2012, 00:18  [ТС] 9
Somebody, fstream подключил, неймспейс тоже. Та же ерунда. Да и ругается не на неизвестный идентификатор, а хочет закрыть скобку пораньше моего.
0
595 / 563 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
17.10.2012, 11:42 10
alex.gorbach, как пример, сами подправьте под свое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
class OwnThing
{
public:
    void    SaveToFile(istream& in);
    void    LoadFromFile(istream& in){
        in >> i;
    };
private:
    int i;
};
 
int main(){
    OwnThing own;
    own.LoadFromFile(cin);
    
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 11:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Передача указателя
Здравствуйте! Форумчане, очень нужна помощь..:cry: В общем ситуация такова: написана программа,...

передача указателя
какой способ передачи указателя наиболее быстрый? int a = 1; int *b= &amp;a;...

Передача двойного указателя
Написал прогу которая работает с односвязным списком. При передаче в функцию двойного указателя, я...

Передача указателя в функцию
Здраствуйте. Если не охота читать гору текста то этот абзац + последущий за ним код можете...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.