Форум программистов, компьютерный форум, киберфорум
Наши страницы

Член-функция класса не работает - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Числа Фибоначчи http://www.cyberforum.ru/cpp-beginners/thread76399.html
1ое задание: Числа Фибоначчи определяются формулами f0 =f1 = 1; fn = fn-1 + fn-2 при n =2,3,… Определить 40-е число Фибоначчи, найти первое число Фибоначчи, большее m (m>2). 2ое задание:...
C++ как подключить файл? начал работу с файлами на языке Си, но не могу понять, как подключить файл, чтобы программа работала, где его надо создавать, какого типа он (блокнот, word). http://www.cyberforum.ru/cpp-beginners/thread76392.html
C++ Игра "Питон"
Добрый вечер, вы не могли бы помочь милой девушке переделать игру змейка в игру питон?! суть в том что питон не растет и может есть лишь один цвет фруктов а второй не может (всего два цвета...
C++ C/C++ на смортфоне
есть интерпритатор языка С/С++ на ОС Symbian 9? (вместе с компилятором). Если кто-нибудь знает нечто подобное - сообщите пожалуйста, где достать.
C++ Строки/Символы на С http://www.cyberforum.ru/cpp-beginners/thread76369.html
Ребят, помогите. Уже 2 день пытаюсь сделать, никак. (Только С) Ввести строку, ввести набор символов. Если такая последовательность есть в строке заменить ее на символ $ , если нет выдать...
C++ Объктно-ориентированное программирование. С++ здравствуйте уважаемые программисты :) в универе задали решить задачки, если будет не трудно, помогите пожалуйста :) задачи: 1. Даны два двумерных массива целых чисел с размерами (4х5)... подробнее

Показать сообщение отдельно
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
29.05.2015, 16:23
Подскажите пожалуйста, сделал композицию элемент-объект, запускается,работает. Попытался использовать функцию для изменения параметра,а оно не работает. Т.е. все запускается,но значение не меняется,выводит предыдущее значение(начальное).Почему так?
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib.h>
#include <iomanip>
#include "Unit3.h"
 
using namespace std;
 
int main()
{
 
  BasePlusCommissionEmployee b(300);
  CommissionEmployee c("Bob","Lewis","333-33-3333",b,5000,.04);
 
  cout << endl;
  c.print();
  cout << "\nZarplata: " << c.earnings() << endl << endl;
 
  b.setBaseSalary(400); // ПОПЫТКА ПОМЕНЯТЬ ЗАРПЛАТУ, ВЫВОДИТ НИЖЕ ВСЕ РАВНО СТАРОЕ ЗНАЧЕНИЕ "300" вместо "400"
  c.print();
  cout << "\nZarplata: " << c.earnings();
  cout << endl;
 
 system("pause");
 return 0;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib.h>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
BasePlusCommissionEmployee::BasePlusCommissionEmployee(double salary)
{
 setBaseSalary(salary); // проверить и сохранить зарплату
 cout << "BasePlusCommissionEmployee constructor" << endl;
}
BasePlusCommissionEmployee::~BasePlusCommissionEmployee()
{
 cout << "BasePlusCommissionEmployee destructor:" << endl;
 print();
 cout << "\n\n";
}
// установить зарплату
void BasePlusCommissionEmployee::setBaseSalary(double salary)
{
 baseSalary=(salary<0.0) ? 0.0 : salary;
}
 
// возвратить зарплату
double BasePlusCommissionEmployee::getBaseSalary() const
{
 return baseSalary;
}
 
// напечатать объект CommissionEmployee
void BasePlusCommissionEmployee::print() const
{
 cout << "base-salaried ";
 // вызвать функцию print для класса CommissionEmployee
 
 cout << "\nbase salary: " << getBaseSalary();
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib.h>
#include <iomanip>
 
using namespace std;
 
#ifndef Unit2H
#define Unit2H
 
class BasePlusCommissionEmployee
{
 public:
  BasePlusCommissionEmployee(double =0.0);
 
  ~BasePlusCommissionEmployee();
  void setBaseSalary(double); // установить основную зарплату
  double getBaseSalary() const; // возвратить основную зарплату
  void print() const; // напечатать объект CommissionEmployee
 private:
  double baseSalary; // основная зарплата
};
//---------------------------------------------------------------------------
#endif
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib.h>
#include <iomanip>
#include "Unit3.h"
#include "Unit2.h"
 
using namespace std;
 
CommissionEmployee::CommissionEmployee(const string &first,const string &last,
                                     const string &ssn,
                                     const BasePlusCommissionEmployee &bp,
                                     double sales,double rate)
 : firstName(first),lastName(last),socialSecurityNumber(ssn),bpce(bp)
{
 setGrossSales(sales); // проверить и сохранить объем продаж
 setCommissionRate(rate); // проверить и сохранить процент
 cout << "Commission employee constructor" << endl;
}
 
CommissionEmployee::~CommissionEmployee()
{
 cout << "Commission employee destructor:" << endl;
 print();
 cout << "\n\n";
}
// установить имя
void CommissionEmployee::setFirstName(const string &first)
{
 firstName=first; // должно проверяться
}
 
// возвратить имя
string CommissionEmployee::getFirstName() const
{
 return firstName;
}
 
// установить фамилию
void CommissionEmployee::setLastName(const string &last)
{
 lastName=last; // должно проверяться
}
 
// возвратить фамилию
string CommissionEmployee::getLastName() const
{
 return lastName;
}
 
// установить номер страховки
void CommissionEmployee::setSocialSecurityNumber(const string &ssn)
{
 socialSecurityNumber=ssn; // должно проверяться
}
 
// возвратить номер страховки
string CommissionEmployee::getSocialSecurityNumber() const
{
 return socialSecurityNumber;
}
 
// установить общую сумму продаж
void CommissionEmployee::setGrossSales(double sales)
{
 grossSales = (sales<0.0) ? 0.0 : sales;
}
 
// возвратить общую сумму продаж
double CommissionEmployee::getGrossSales() const
{
 return grossSales;
}
 
// установить комиссионный процент
void CommissionEmployee::setCommissionRate(double rate)
{
 commissionRate = (rate>0.0&&rate<1.0) ? rate : 0.0;
}
 
// возвратить комиссионный процент
double CommissionEmployee::getCommissionRate() const
{
 return commissionRate;
}
 
// вычислить зароботок
double CommissionEmployee::earnings() const
{
 return commissionRate*grossSales+bpce.getBaseSalary();
}
 
// напечатать объект CommissionEmployee
void CommissionEmployee::print() const
{
 cout << "commission employee: " << firstName << ' ' << lastName
      << "\nsocial security number: " << socialSecurityNumber
      << "\ngross sales: " << grossSales << "\ncommission rate: "
      << commissionRate << "\nbase salary " << bpce.getBaseSalary();
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib.h>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
#ifndef Unit3H
#define Unit3H
 
class CommissionEmployee
{
 public:
   CommissionEmployee(const string &,const string &,const string &,
                      const BasePlusCommissionEmployee &,double =0,double =0);
   ~CommissionEmployee();
  void setFirstName(const string &); // установить имя
  string getFirstName() const; // возвратить имя
 
  void setLastName(const string &); // установить фамилию
  string getLastName() const; // возвратить фамилию
 
  void setSocialSecurityNumber(const string &); // установить SSN
  string getSocialSecurityNumber() const; // возвратить SSN
 
  void setGrossSales(double); // установить общую сумму продаж
  double getGrossSales() const; // возвратить общую сумму продаж
 
  void setCommissionRate(double); // установить процент
  double getCommissionRate() const; // возвратить процент
 
  double earnings() const; // вычислить зароботок
  void print() const; // напечатать объект CommissionEmployee
 private:
  string firstName;
  string lastName;
  string socialSecurityNumber;
  double grossSales; // продажи за неделю
  double commissionRate; // комиссионный процент
  const BasePlusCommissionEmployee bpce;
};
//---------------------------------------------------------------------------
#endif
Почему функция setBaseSalary() не присваивает новое значение?

Добавлено через 13 минут
Кхм,а если ее впихнуть перед созданием объекта "с" , то значение меняет.... Может кто объяснить,почему если поставить замену после создания объекта, из-за чего он не передается ему с новым значением?И как можно исправить? Кроме того способа,чтоб создать новый объект и снова передать ему объект "b"...Хотел чтоб изменялся старый, или так не получится?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru