Код:
// oop_laba2_2cpp: определяет точку входа для консольного приложения.
//Вариант 6
//Объект – директория.
//
//Включает в себя
//массив
//файлов (имя, расширение, размер).
//
//Методы – Определение свойств класса
//
//Определение размера директории.
#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;
}
По заданию в size_dir объекта класса директория, должна записаться сумма size_file объектов класса файл. нужно это сделать через массив файлов, там где //???? это тот кусок кода отвечающий за это. подскажите пожалуйста как в массив-vector от класса Директория, передать объекты класса FIle?
все сделал.
в класс директория добавил
vector<File> pfiles;
void addfile(File ffiles);
потом
void Directory::addfile(File ffiles )
{
pfiles.push_back(ffiles);
size_dir += ffiles.getSize_file();
}
и в функции main
dir.addfile(file1);
dir.addfile(file2);
cout<< dir.getSizeDir();
студентам сфу делающим эту лабу привет!