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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
viktor_21
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 5
#1

Запись в массив объекты класса (vector) - C++

27.11.2013, 06:01. Просмотров 798. Ответов 2
Метки нет (Все метки)

// oop_laba2_2cpp: определяет точку входа для консольного приложения.
//Вариант 6
//Объект – директория.
//
//Включает в себя
//массив
//файлов (имя, расширение, размер).
//
//Методы – Определение свойств класса
//
//Определение размера директории.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <locale>
#include <cstdlib>
#include "windows.h"
#include "vector"
using namespace std;
 
class File
{
private:
    char name_file[20];
    char extension[5];
    double size_file;
public:
    void setName_file(char *pname_file);
    void setSize_file(double psize_file);
    void setExtension(char *pextension);
    void setFileFull(char *pname_file, double psize_file, char *pextension);
 
    char *getName_file();
    char *getExtension();
    double getSize_file();
    File();
};
 
class Directory
{
private: 
    char name_dir[20];
    double size_dir;
public:
    void setName_dir(char *pname_dir);  
    char *getName_dir();
    double getSizeDir();
//  File *a;
//  pfile.push_back(a);//????? 
    vector<File*> pfiles;// объявление массива указателей File
    void setSize_dir();//функция обращается к массиву объектов, берет у каждого их size_file - через гет сайз файл и суммирует
    Directory();
 
};
 
///////////////////////////////////////////////////// методы File
 
void File:: setName_file (char *pname_file)
{ sprintf_s(name_file,"%s",pname_file) ;}
 
void File:: setSize_file (double psize_file)
{ size_file = psize_file; }
 
void File:: setExtension (char *pextension)
{ sprintf_s(extension,"%s",pextension) ; }
 
void File:: setFileFull (char *pname_file, double psize_file, char *pextension)
{ 
  sprintf_s(name_file,"%s",pname_file) ;
  size_file = psize_file;
  sprintf_s(extension,"%s",pextension) ;
}
 
char * File:: getName_file()
{
    return name_file;
}
 
char * File:: getExtension()
{
    return extension ;
}
 
double File:: getSize_file()
{
    return size_file ;
}
 
File::File()
{
    sprintf_s(name_file,"%s","пусто") ;
    sprintf_s(extension,"%s","null") ;
    size_file=0;
}
 
///////////////////////////////////////////////////// методы Directory
 
void Directory::setName_dir(char *pname_dir)
{
    sprintf_s(name_dir,"%s",pname_dir) ;
}
 
char * Directory::getName_dir()
{
    return name_dir;
}
 
double Directory::getSizeDir()
{
    return size_dir;
}
 
void Directory::setSize_dir()
{
    for (int i = 0; i < length; i++)///????
    {
        pfiles[i]=
    }
 
    //суммировать все файлы по size_file из класса file и записть это в size_dir
    for (int i = 0; i < pfiles.size() ; i++)
    {
        size_dir += pfiles[i]->getSize_file();  
    }
 
}
 
 
 
 
Directory::Directory()
{
    sprintf_s(name_dir,"%s","пусто") ;
    size_dir=0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale( LC_ALL,"Russian" );
    
 
    Directory dir; 
    dir.setName_dir("Disk_C");
 
    File file1,file2;
    file1.setFileFull("game" ,10,"exe");
    file2.setFileFull("laba5" ,4, "doc");
 
    
    
    dir.setSize_dir();//чудесная функция подсчета size_file всех объектов и записи этого значения в size_dir
    //cout << dir.getSizeDir();
        
    system("pause");
    return 0;
}
По заданию в size_dir из касса директории, должна записаться сумма size_file класса файл. нужно это сделать через массив файлов, там где //???? это тот кусок кода отвечающий за это. подскажите пожалуйста как в массив-vector от класса Директория, передать объекты класса FIle?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 06:01     Запись в массив объекты класса (vector)
Посмотрите здесь:
C++ Vector ссылок на объекты класса
C++ Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
C++ Реализовать шаблон класса vector, реализующий динамический массив
C++ Динамический массив указателей на объекты класса
C++ Можно ли динамически выделить память под массив указателей, на объекты класса?
C++ Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
C++ Запись в vector<vector<char>>
Нюансы синтаксиса: что означает запись vector<int*> a и vector <int>*a ? C++
C++ Классы и объекты в С++, компонента класса и экземпляр класса
Шаблонный класс vector. Найти объекты с названием, начинающимся на символ и со значением больше value C++
Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты? C++
Составить описание класса "3D вектор". Объявить объекты класса и продемонстрировать работу методов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
27.11.2013, 08:42     Запись в массив объекты класса (vector) #2
Цитата Сообщение от viktor_21 Посмотреть сообщение
как в массив-vector от класса Директория, передать объекты класса FIle?
Надо создать экземпляр класса файл, выделив тем самым под него память, заполнить его при необходимости и затем добавить в вектор указатель на него.
viktor_21
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 5
27.11.2013, 18:29  [ТС]     Запись в массив объекты класса (vector) #3
все сделал.
в класс директория добавил
C++
1
2
vector<File> pfiles;
void addfile(File ffiles);
потом
C++
1
2
3
4
5
void Directory::addfile(File ffiles )
{
    pfiles.push_back(ffiles);
    size_dir += ffiles.getSize_file();  
}
и в функции main
C++
1
2
3
dir.addfile(file1);
dir.addfile(file2);
cout<< dir.getSizeDir();
студентам сфу делающим эту лабу привет!
Ответ Создать тему
Опции темы

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