Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
isaak
111 / 48 / 19
Регистрация: 17.10.2010
Сообщений: 704
#1

Изменить класс Employee

21.11.2010, 19:58. Просмотров 947. Ответов 4
Метки нет (Все метки)

Всем доброго время суток. Второй день бьюсь. нужно создать класс Employee так чтобы можно было инициализировать данные-члены itsAge, itsYearsOfService и itsSalary в процессе создания его объекта, вотсам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// класс Employee.h
class Employee
{
public:
    Employee (int age, int YearsOfService, int salary);
    int GetAge() const;
    void SetAge(int age);
    int GetYearsOfService() const;
    void SetYearsOfService(int years);
    int GetSalary() const;
    void SetSalary(int salary);
private:
    int itsAge;
    int itsYearsOfService;
    int itsSalary;
};
//Employee.cpp
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
#include <iostream>
#include "Employee.h"
int Employee::GetAge() const
{
    return itsAge;
}
void Employee::SetAge(int age)
{
    itsAge = age;
}
int Employee::GetYearsOfService() const
{
    return itsYearsOfService;
}
void Employee:: SetYearsOfService(int years)
{
    itsYearsOfService = years;
}
int Employee::GetSalary() const
{
    return itsSalary;
}
void Employee::SetSalary(int salary)
{
    itsSalary = salary;
}
int main()
{
    using namespace std;
 
   Employee Paul;
    Employee Angella;
 
    Paul.SetAge(28);
    Paul.SetYearsOfService(5);
    Paul.SetSalary(50000);
 
        Angella.SetAge(32);
    Angella.SetYearsOfService(5);
    Angella.SetSalary(40000);
    
 
    cout << "At EPAM Systems company, Paul and Angella have ";
    cout << "the same job.\n\n";
    
    cout << "Paul is " << Paul.GetAge() << " years old." << endl;
    cout << "Paul has been with the firm for ";
    cout << Paul.GetYearsOfService() << " years." << endl;
    cout << "Paul earns pounds" << Paul.GetSalary();
    cout << " pounds per year.\n\n";
 
    cout << "Angella, on the other hand is " << Angella.GetAge();
    cout << " years old and has been with the company ";
    cout <<  Angella.GetYearsOfService();
    cout << " years.Yet Angella only makes pounds" << Angella.GetSalary();
    cout << " pounds per year! Something here is unfair.";
}
У меня компилятор выдает ошибки:
Error 1 error C2512: 'Employee' : no appropriate default constructor available c:\users\администратор\documents\visual studio 2008\projects\c++\console\p816\p816\p816.cpp 31 p816
Error 2 error C2512: 'Employee' : no appropriate default constructor available c:\users\администратор\documents\visual studio 2008\projects\c++\console\p816\p816\p816.cpp 32 p816
Не понимаю как исправить. заранее огромное спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2010, 19:58
Ответы с готовыми решениями:

Класс Employee
Выдает ошибку, не могу понять в чем дело. Писал код в qt employee.h...

Класс Employee
Создал класс, все работает, но опять одно из значений не корректно отображается...

Создать класс employee
Создайте класс employee, который содержит имя (объект класса string) и но- ...

Класс Employee, проблемы реализации
Задание: Создайте класс с именем Employee («служащий»), включающий в качестве ...

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

4
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
21.11.2010, 20:04 #2
isaak, Ну задать конструктор по умолчанию к примеру. Т.е. без параметров, т.к. именно его вы пытаетесь вызвать в main
0
isaak
111 / 48 / 19
Регистрация: 17.10.2010
Сообщений: 704
21.11.2010, 21:31  [ТС] #3
ForEveR, а как это сделать не как не пойму?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.11.2010, 00:30 #4
isaak, В классе в паблик части написать.
C++
1
Employee ();
Вне класса.

C++
1
2
3
Employee::Employee()
{
}
У этого конструктора я что-то тоже не нахожу определения.
C++
1
        Employee (int age, int YearsOfService, int salary);
0
nilamop
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 22
23.05.2013, 16:12 #5
Цитата Сообщение от isaak Посмотреть сообщение
Всем доброго время суток. Второй день бьюсь. нужно создать класс Employee так чтобы можно было инициализировать данные-члены .....
Доброго дня. Хочу думать, что этот код для Вас уже как "орешки" Но все же хочу выложить работающий вид программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Employee.h
 
class Employee
{
public:
    Employee (int age, int YearsOfService, int salary);
    ~Employee();
    int GetAge() const;
    void SetAge(int age);
    int GetYearsOfService() const;
    void SetYearsOfService(int years);
    int GetSalary() const;
    void SetSalary(int salary);
private:
    int itsAge;
    int itsYearsOfService;
    int itsSalary;
};
Тут Вы забыли указать деструктор.

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
#include <iostream>
#include "Employee.h"
Employee::Employee(int age, int YearsOfService, int salary)
{
    itsAge = age;
    itsYearsOfService = YearsOfService;
    itsSalary = salary;
}
Employee::~Employee() // деструктор не выполняющий действий
{
}
int Employee::GetAge() const
{
    return itsAge;
}
void Employee::SetAge(int age)
{
    itsAge = age;
}
int Employee::GetYearsOfService() const
{
    return itsYearsOfService;
}
void Employee:: SetYearsOfService(int years)
{
    itsYearsOfService = years;
}
int Employee::GetSalary() const
{
    return itsSalary;
}
void Employee::SetSalary(int salary)
{
    itsSalary = salary;
}
int main()
{
    using namespace std;
 
    Employee Paul(28, 5, 50000);
    Employee Angella(32, 5, 40000);
 
    cout << "At EPAM Systems company, Paul and Angella have ";
    cout << "the same job.\n\n";
 
    cout << "Paul is " << Paul.GetAge() << " years old." << endl;
    cout << "Paul has been with the firm for ";
    cout << Paul.GetYearsOfService() << " years." << endl;
    cout << "Paul earns pounds" << Paul.GetSalary();
    cout << " pounds per year.\n\n";
 
    cout << "Angella, on the other hand is " << Angella.GetAge();
    cout << " years old and has been with the company ";
    cout <<  Angella.GetYearsOfService();
    cout << " years. " << endl;
    cout << "Yet Angella only makes pounds " << Angella.GetSalary();
    cout << " pounds per year! Something here is unfair." << endl;
    return 0;
}
Мне сложно объяснить исправления, знания еще пока не позволяют учить, но насколько я понял, тут надо обращаться к конструктору, чего Вы не сделали...мы же объявляли его не зря в хедере. Так же объявив переменные, данные члены тоесть, в конструкторе, мы можем обращаться прямо к нему и не использовать объекты-функции, в этом и заключается прелесть конструкторов. Немного подправил вывод. Надеюсь, что Вам помог. А если это сообщение прочтут гуру C++, и увидят, что я что-то недопонимаю, то прошу расписать-объяснить, что я накодил. Странно это, понимать работу но объяснить правильно не получается. Надеюсь я не один такой.
0
23.05.2013, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 16:12

Создать абстрактный базовый класс Employee
МОЖНО ПОЖАЛУЙСТА ПОДРОБНО,Я ХОЧУ РАЗОБРАТЬСЯ 1. Создать абстрактный базовый...

Создайте класс employee. Как написать программу?
Создайте класс employee. Класс должен включать поле (массив) типа char для...

Создать класс Employee, содержащий следующие элементы:
Создать класс Employee, содержащий следующие элементы: - поле «ФИО» char*...


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

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

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