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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.87
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
#1

Класс внутри класса - возможно ли? - C++

14.08.2010, 15:30. Просмотров 8648. Ответов 21
Метки нет (Все метки)

Всем привет!
Помогите, пожалуйста, понять следующий текст задания:

Расширьте содержание класса employee /*2 объекта и 2 метода*/ из упражнения 4, включив в него класс date и перечисление etype(см. упражнение 6 главы 4). Объект класса date будет использоваться для хранения даты приема сотрудника на работу. Перечисление будет использовано для хранения статуса сотрудника: лаборант, секретарь, менеджер и т.д. Последние два поля данных должны быть закрытыми в определении класса employee, как и номер и оклад сотрудника. Вам будет необходимо разработать методы gatemploy() и putemploy(), предназначенные соответственно для ввода и отображения информации о сотруднике. Возможно, при создании методов вам понадобится ветвление switch для работы с перечисляемым типом etype. Напишите функцию main(), которая попросит пользователя ввести данные о трех сотрудниках, а затем выведет эти данные на экран.
Непонятен момент про класс date, которым нужно расширить класс employee. Возможно ли такое, чтобы класс создавался внутри класса, и если да, то я никак не смог это реализовать.
Так же непонятно,
Последние два поля данных должны быть закрытыми в определении класса employee
.
Т.е. как сделать закрытыми - это ясно, неясно о каких двух полях идет речь. Один из них enum, а вот про второй я не понял.
Помогите разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2010, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс внутри класса - возможно ли? (C++):

Класс внутри класса - C++
Есть 2 класса: большой -А и меньшый-Б. Класс Б есть параметром класса А. в большом классе есть процедуры использующие обекты класса Б! ...

Класс внутри класса - C++
Добрый вечер! Имею вот что: class Outer { public: double y ; class Inner

Не создается указатель на класс внутри класса - C++
Всем привет! У меня возникла очень интересная ситуация... У меня есть набор классов. Часть классов являются членами других классов. ...

Функция указатель на класс, определенный внутри шаблонного класса - C++
Доброго времени суток! Помогите пожалуйста разобрать со следующим кодом: template <class T> class List{ class Node{ public: ...

Структуру переделать в класс, чтобы массив был внутри класса - C++
есть структура struct CUSTOMER { unsigned short number; char name; char tel; ...

Объект внутри класса. Напишите класс Geo, моделирующий географические координаты на поверхности Земли - C++
Ребят, помогите решить задачу, пожалуйста. Чтт никак не получается :( Напишите класс Geo, моделирующий географические координаты на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.08.2010, 19:59 #16
half-node, Например) Или name="";
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
15.08.2010, 20:02 #17
Цитата Сообщение от half-node Посмотреть сообщение
Каким образом можно обнулять объект string конструктором
Если обнулять при инициализации, то просто нужно вызвать конструктор по умолчанию:
C++
1
std::string name;
В противном случае вызываем метод clear:
C++
1
2
std::string name("string");
name.clear();
Для любителей садо-мазо:
C++
1
2
3
4
std::string name("string");
name = std::string();
std::string str("str");
str = "";
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
15.08.2010, 20:02  [ТС] #18
Цитата Сообщение от Lavroff Посмотреть сообщение
half-node, Например) Или name="";
Кстати, это не выручает в данной ситуации. Т.е. при обнулении name без cin.get() - проблема остается. Но при cin.get() всплывает следующая проблема, при отображении "съедается" первый символ первого объекта... Я имею в виду при вызове метода putdata()
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.08.2010, 20:06 #19
half-node,
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
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
class employee
{
private:
        string name;
        long number;
public:
        employee():number(0)
        {};
 
        void getdata()
        {
                cout << "Enter name: ";
                getline(cin,name);
                cout << "Enter number: ";
                cin >> number;
        }
 
        void putdata()const
        {
                cout << "Name: " << name << endl;
                cout << "Number: " << number << endl;
        }
};
 
 
int main()
{
        employee emp[100];
        int n=0;
        char ch;
        do
        {
                emp[n++].getdata();
                cout << "Repeat?(y/n): "; cin >> ch;
                                std::cin.get();
        }while(ch!='n');
        
        for(int i=0; i<n;i++)
                emp[i].putdata();
 
        getch();
        return 0;
}
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
15.08.2010, 20:12  [ТС] #20
Спасибо большое! Это большой урок для меня с работой со строками. Хотя, мне не до конца понятно, почему съедался первый символ. Если он съедался при вызове getline, то это происходит раньше std::cin.get()... А если при вызове putdata, то вообще темный лес >_<

И если не трудно, что делает cin.get() с пустым параметром? в двух словах. Спасибо
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.08.2010, 20:14 #21
half-node, Из-за cin.get скорее. Первый символ уходил в поток cin, а не в поле name.
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
15.08.2010, 20:29  [ТС] #22
Ох...как очевидно. Спасибо еще раз.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2010, 20:29
Привет! Вот еще темы с ответами:

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Возможно ли создание объекта шаблонного класса в функции этого класса? - C++
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Заполнение вектора класса внутри самого класса - C++
class A { private: int a; public: A() { a = 0; }; A get(vector &lt;A&gt;* vec)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.08.2010, 20:29
Ответ Создать тему
Опции темы

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