Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143

Ввод вывод переменной класса, являющейся членом другого класса

10.05.2018, 14:38. Показов 2419. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! У меня есть 2 класса:

подкласс filling:
C++
1
2
3
4
5
6
7
8
9
class filling
{
private:
    int number;
    char *name;
    float filmass[10];
public:
//несколько функций
}
и внешний confection:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <class Filling>
class confection
{
    private:
    char *name;
    struct date
    {
        int year,month,day;
    };
    date Product_Date,Best_Before;
    Filling *filling;
    public:
//будет несколько функций
};
переменная типа Filling должна быть полем подкласса filling, кто знает как это реализовать(особенно ввод/вывод)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2018, 14:38
Ответы с готовыми решениями:

Обращение к переменной, являющейся членом класса
class Zag // первый файл Header.h { public: int course ; Zag() { course = 0; } };

Как получить private переменную класса, функцей членом другого класса
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...

Использование класса как переменной другого класса
Приветствую! Кто-нибудь может объяснить вопрос, заданный в теме? Как объявлять такую переменную, брать и забирать из нее данные? Можете...

24
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 14:57
Code_idiot, как-то так:
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
class Filling
{
private:
    int number;
    char *name;
    float filmass[10];
public:
//несколько функций
};
 
 
class confection
{
    private:
    char *name;
    struct date
    {
        int year,month,day;
    };
    date Product_Date,Best_Before;
    Filling filling;
    public:
//будет несколько функций
};
Добавлено через 59 секунд
Цитата Сообщение от Code_idiot Посмотреть сообщение
переменная типа Filling должна быть полем подкласса filling, кто знает как это реализовать(особенно ввод/вывод)?
Как это понять? Заполнить поля класса
C++
1
class confection
, включая поля класса
C++
1
class Filling
?
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 15:21  [ТС]
qwe123qwea, да

Добавлено через 9 минут
qwe123qwea, у класса filling есть конструктор, заполняющий это
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 15:22
Code_idiot, вот для задания полей для
C++
1
class Filling
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Filling
{
private:
    int number;
    string name;
    float filmass[10];
public:
    //несколько функций
    int getNumber(){return number;}
    void setNumber(int num){number = num;}
    const char * getName(){return name.data();}
    void setName(const char * _name){name = _name;}
    float * getFilmass(int &size){size = 10; return filmass;}
    void setFilmass(float * mass, int size_mass)
    {
        for(int i = 0; i < size_mass; i++)
            filmass[i] = mass[i];
    }
};
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 15:27  [ТС]
qwe123qwea, допустим, у меня есть такие вот функции:
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 filling
{
private:
    int number;
    char *name;
    float filmass[10];
 
public:
    filling (int numbeer,char *namee,float fillmass[10])
    {
        number = numbeer;
        name=namee;
        filmass=fillmass;
        cout<<"Add basic filling"<<endl;
        cout<<"Add number of components :";
        cin>>number;
        cout<<"Add components names in 1 string"<<endl;
        string s;
        getline (cin,s);
        strcpy(name, s.c_str());
        cout<<"Add their mass (in same chain)";
        int i;
        for (i=0;i<number;i++)
            cin>> filmass[i];
    }
 
    void Add_Ingredient ()
    {
        cout <<"Add new ingredient name"<<endl;
        string s;
        getline (cin,s);
        strcat (name, s.c_str());
        cout<<"Add "<<s<<" mass ";
        cin>>filmass[number];
        number++;
    }
 
    void Del_Ingredient ()
    {
        cout<<"Type deleting ingredient name"<<endl;
        string s,n;
        getline (cin,s);
        n=name;
        int counter(n.find(s)),pr(1);
        for(int i = 0;i<counter;++i)if(n.at(i) == ' ')++pr;
        n.erase(n.find(s),s.length()+1);
        strcpy (name,n.c_str());
        int i;number--;
        for (i=pr-1;i<number;i++)
            filmass[i]=filmass[i+1];
        filmass[number]=NULL;
    }
};
их же можно будет вызвать из основного?
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 15:35
Code_idiot, а задание полностью можно.
А у вас то что вы прислали компилируется?
Можно.

Добавлено через 5 минут
Вот как-то так будет выглядеть класс filling:
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
class cFilling
{
private:
    int number;
    string name;
    float filmass[10];
public:
    cFilling(){}
    cFilling(int num, const char * _name, float * mass, int size_mass):number(num), name(_name)
    {
        for(int i = 0; i < size_mass; i++)
            filmass[i] = mass[i];
    }
    ~cFilling(){}
    //несколько функций
    int getNumber(){return number;}
    void setNumber(int num){number = num;}
    const char * getName(){return name.data();}
    void setName(const char * _name){name = _name;}
    float * getFilmass(int &size){size = 10; return filmass;}
    void setFilmass(float * mass, int size_mass)
    {
        for(int i = 0; i < size_mass; i++)
            filmass[i] = mass[i];
    }
};
А лучше скиньте задание полностью.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 15:35  [ТС]
qwe123qwea, я пытаюсь писать курсач(


само задание такое:

Создать класс Confection, включающий в себя следующие элементы:
- поле «Название» char * Name;
- поле «Дата изготовления» struct Date {int year; int month; int day} ProductDate;
- поле «Срок годности» struct Date {int year; int month; int day} BestBefore;

- включить в класс поле класса Filling (начинка) Filling * filling;

- метод получения даты изготовления int GetProductDate();
- метод получения названия int GetName();
- метод добавления начинки void AddFilling(Filling filling);

- конструктор с параметрами Confection (char * Name, Date ProductDate, Date BestBefore, Filling * filling).

Создать класс Filling, содержащий в себе элементы:
- поле «количество ингредиентов» int Number;
- поле «Название» char * Name;
- конструктор с параметрами Filling (int Number, char * Name);
- метод «Удалить ингредиент» void AddIngredient ();
- метод «Добавить ингредиент» void DelIngredient ().
В классе Confection перегрузить оператор ~ (унарный оператор класса), новое действие - удалить начинку.
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 15:40
Code_idiot, вот и скиньте задание на курсовую, а я подскажу в куда вам "копать".

Добавлено через 3 минуты
Цитата Сообщение от Code_idiot Посмотреть сообщение
qwe123qwea, я пытаюсь писать курсач(


само задание такое:

Создать класс Confection, включающий в себя следующие элементы:
- поле «Название» char * Name;
- поле «Дата изготовления» struct Date {int year; int month; int day} ProductDate;
- поле «Срок годности» struct Date {int year; int month; int day} BestBefore;

- включить в класс поле класса Filling (начинка) Filling * filling;

- метод получения даты изготовления int GetProductDate();
- метод получения названия int GetName();
- метод добавления начинки void AddFilling(Filling filling);

- конструктор с параметрами Confection (char * Name, Date ProductDate, Date BestBefore, Filling * filling).

Создать класс Filling, содержащий в себе элементы:
- поле «количество ингредиентов» int Number;
- поле «Название» char * Name;
- конструктор с параметрами Filling (int Number, char * Name);
- метод «Удалить ингредиент» void AddIngredient ();
- метод «Добавить ингредиент» void DelIngredient ().
В классе Confection перегрузить оператор ~ (унарный оператор класса), новое действие - удалить начинку.
Нужно всё точ в точ сделать как в задании?
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 15:42  [ТС]
qwe123qwea, увы, да

да еще и брать/пихать в txt файлы
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 15:50
Code_idiot, т.е., как я понял, при запуске программы создается объект класса
C++
1
Confection
вызывающий конструктор с параметрами как в задании, и при этом все должно записаться в файл + ко всему этому нужно реализовать функции добавление и удаление ингредиента из файла, верно?
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 16:00  [ТС]
qwe123qwea, угу. Идея есть такая: на каждый confection свой файл txt, название которого юзер и будет вбивать
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 16:09
Цитата Сообщение от Code_idiot Посмотреть сообщение
qwe123qwea, угу. Идея есть такая: на каждый confection свой файл txt, название которого юзер и будет вбивать
А в файле как должны быть данные?

Добавлено через 5 минут
Вот тут:
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
#include <iostream>
 
using namespace std;
 
class Filling
{
private:
    int number;
    char * name;
public:
    Filling(){}
    Filling(int num, char * _name):number(num), name(_name)
    {
    }
    ~Filling(){}
    //несколько функций
    void AddIngredient(){}
    void DelIngredient(){}
};
 
struct Date
{
    int year;
    int month;
    int day;
    // конструктор по умолчанию
    Date() : year(0), month(0), day(0){}
};
class Confection
{
public:
 
    // конструктор по умолчанию
    Confection(){}
    // конструктор с параметрами
    Confection (char * Name, Date ProductDate, Date BestBefore, Filling * _filling)
        : name(Name)
        , Product_Date(ProductDate)
        , Best_Before(BestBefore)
        , filling(_filling)
    {}
    // деструктор
    ~Confection(){}
    Date GetProductDate(){return Product_Date;}
    char * GetName(){return name;}
 
private:
    char * name;
    Date Product_Date,Best_Before;
    Filling * filling;
};
int main(int argc, char* argv[])
{
    (void)argc;
    (void)argv;
    setlocale(LC_ALL, "");
 
    Filling data(1, (char*)"qwrqweqweqwe\0");
    Date ProductDate;
    ProductDate.year = 2010;
    ProductDate.month = 10;
    ProductDate.day = 14;
    Date BestBefore;
    BestBefore.year = 2015;
    BestBefore.month = 12;
    BestBefore.day = 14;
    string name;
    cout << "Введите название: ";cin>>name;
    Confection conf((char*)name.data(), ProductDate, BestBefore, &data);
 
    system("pause");
    return 0;
}
реализовано все кроме записи, чтения файла и функций добавить и удалить ингредиент. Попробуй сам, будет не получаться пиши.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 16:10  [ТС]
да как хочешь

я думаю сделать примерно так :

Бубль - char name confection
10 04 2018 - Product_date confection
18 05 2018 - Best Before confection
7 - number filling
нуга курага фундук - char name filling
12 27 35 - filmass filling (мой закидон)

Добавлено через 1 минуту
qwe123qwea, личку?
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 16:10
Цитата Сообщение от Code_idiot Посмотреть сообщение
да как хочешь

я думая сделать примерно так :

Бубль - char name confection
10 04 2018 - Product_date confection
18 05 2018 - Best Before confection
7 - number filling
нуга курага фундук - char name filling
12 27 35 - filmass filling (мой закидон)
Хорошо, только зачем вот это:
12 27 35 - filmass filling (мой закидон)?
Сюда пиши.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 16:14  [ТС]
ну задание вроде как рецепт, да и за доп могут накинуть баллы
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 16:21
Code_idiot, я имею ввиду для чего этот параметр нужен.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 16:34  [ТС]
qwe123qwea, ты же в курсе как работать с txt файлами?

Добавлено через 39 секунд
т.к. я не могу в замену строк в файле
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 16:39
Code_idiot, в курсе. Так ты покажи сначала что накидал, а дальше посмотрим.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
10.05.2018, 16:57  [ТС]
пока пытаюсь запилить конструктор confection'a

C++
1
2
3
4
5
6
7
8
9
10
11
12
confection (char *namee,date Product_date, date Best_date,filling filler)
    {
            name=namee;
            Product_Date=Product_date;
            Best_Before=Best_date;
            Filling=filler;
            string sname,s;
            cout <<"Add file name"<<endl;
            getline (cin,sname);
            
 
    }
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
10.05.2018, 17:04
Code_idiot, в 12 посте уже реализован конструктор, к нему прикручивай работу с файлами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2018, 17:04
Помогаю со студенческими работами здесь

Указатель является переменной-членом класса
#include &lt;iostream&gt; class SimpleCat { public: SimpleCat(); ~SimpleCat(); int GetAge() const { return *itsAge; } void...

Получить константу из экземпляра класса, который является членом другого класса
class test { const STATUS = 1; } $a = new test(); echo $a::STATUS . PHP_EOL; // работает class bar {

Вывод определенной переменной из другого класса
Вообщем сделал вывод из другого класса в класс Program VersionCheck VersionCheck = new VersionCheck(); VersionCheck.VersionServer(); ...

Передача значения переменной из метода одного класса в метод другого класса
Добрый вечер! Есть основная форма Form1 в которой есть метод private void button1_Click(object sender, EventArgs e) обрабатывающий...

Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса?
Подскажите, пожалуйста, как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса. Буду очень...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru