6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
1

Свой деструктор для каждого класса в массиве

09.05.2014, 20:58. Показов 1024. Ответов 4
Метки нет (Все метки)

Предположим есть класс(описывающий какой либо обьект в нескольких переменных), у него есть деструктор, который при вызове сохраняет все переменные в файл. Если содать массив обьектов такого класса и в ходе программы изменить описывающие переменные для нескольких объектов массива, то все объекты сохраняют свои переменные перезаписывая один и тот же файл. Хотелось бы чтобы каждый объект сохранял свои переменные в разный файл.
Как сделать это отдельной функцией и так понятно. Вопрос в том, можно ли сделать так, чтобы деструктор знал под каким номером в массиве находится объект и записывал его переменные в файл с его номером.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2014, 20:58
Ответы с готовыми решениями:

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

Деструктор для класса
У меня есть класс нужен диструтор для этого класса class Hiramuto :public voin { public:...

Написать деструктор для класса
Никак не могу разобраться, как правильно написать деструктор. Помогите пожалуйста. unit...

Для класса задать конструктор и деструктор
Ребята,нужна помощь в написании программы. Для класса задать конструктор(для выделения...

4
Модератор
Эксперт С++
12639 / 10133 / 6102
Регистрация: 18.12.2011
Сообщений: 27,169
09.05.2014, 21:03 2
Заведите дополнительно защищенный целочисленный член класса, в который и записывайте номер объекта.
0
Модератор
Эксперт по электронике
8759 / 6549 / 887
Регистрация: 14.02.2011
Сообщений: 22,971
09.05.2014, 21:09 3
Цитата Сообщение от zss Посмотреть сообщение
Заведите дополнительно защищенный целочисленный член класса, в который и записывайте номер объекта.
и статический
тогда можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
static int namber;
public:
A(){namber++;};
~A(){
  char buf[100];
  sprintf(buf,"file%d", namber);
fopen(buf,"w");
...............
};
A:namber=0;
каждый созданный объект будет увеличивать namber
1
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
09.05.2014, 21:16  [ТС] 4
По подробнее хотелось бы если можно, вот например:
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
class Test {
    private: void initWeight(){
                double a[14];
                std::ifstream F;
                F.open("test.txt", std::ios::in);
                int i(0);
                while (!F.eof()){
                    F>>a[i];
                    i++;
                }
                int c(0);
                for(int i = 0; i<5;i++){
                    for(int k = 0; k<3; k++){
                        weight[i][k] = a[c];
                        c++;
                    }
                }
                F.close();
             }
             void saveWeight(){
                 std::ofstream f;
                 f.open("test.txt", std::ios::out);
                 for(int i = 0; i<5;i++){
                     for(int k = 0; k<3; k++){
                         f<<weight[i][k]<<"\t";
                     }
                 }
                 f.close(); 
             }
    public: 
            Test(){
                                 initWeight();
                
            }
               
            ~Test(){
                                   saveWeight();
            }
        
            bool Recog(){
 
                }
                if (sum > limit)
                    return TRUE;
                else
                    return FALSE;
            }
};
 
void main(){
    Test arr[15];
        
}
Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
тогда можно сделать так
Вот то что нужно вроди бы, пойду попробую.
0
Модератор
Эксперт С++
12639 / 10133 / 6102
Регистрация: 18.12.2011
Сообщений: 27,169
09.05.2014, 21:19 5
Лучший ответ Сообщение было отмечено Sonance как решение

Решение

Примерно так:
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
class Test {
    private:
int number;
static int count; 
void initWeight(){
                number=count++;
                double a[14];
                std::ifstream F;
                string fname="test.txt"+number;
                F.open(fname.c_str(), std::ios::in);
                int i(0);
                while (!F.eof()){
                    F>>a[i];
                    i++;
                }
                int c(0);
                for(int i = 0; i<5;i++){
                    for(int k = 0; k<3; k++){
                        weight[i][k] = a[c];
                        c++;
                    }
                }
                F.close();
             }
            ....
};
int  Test::count=1;
void main(){
    Test arr[15];
        
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2014, 21:19
Помогаю со студенческими работами здесь

Написать деструктор для данного класса
Как лучше написать деструктор для класса: class Library{ private: struct books{ ...

Дописать конструктор и деструктор для класса
Помогите пожалуйста написать конструктор копии и деструктор, а также вызвать их, чтобы деструктор...

Написать для класса деструктор, выводящий надпись
Подскажите пожалуйста, как написать в 71 строке деструктор, так, чтобы при компиляции выводилось на...

Разработать конструкторы и деструктор для заданного класса
разработать конструкторы и деструктор для заданного класса. Осуществить инициализацию объектов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru