1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 54
1

Присвоение и передача значений static переменных в классе

10.05.2019, 16:49. Показов 1878. Ответов 1
Метки нет (Все метки)

Как правильно передать значения SalesPlan и NumOfSales в класс PlanCompletion? При использовании приведенного ниже кода, передаваемое значение SalesPlan = 1078231040, а NumOfSales = 0.

main.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
  #include "pch.h"
    #include <iostream>
    #include "MyClass.h"
    #include <Windows.h>
    
    int main()
    {
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        MyClass Phone1 ;
        
        Phone1.SetName("Galaxy S9+");  //  установил значение приватной переменной используя публичную функцию
        Phone1.SetPrice(700);         //  установил значение приватной переменной используя публичную функцию
        Phone1.SetQuantity(100);     //  установил значение приватной переменной используя публичную функцию
        Phone1.RandNumOfSales();    //  установил случайное значение приватной переменной используя публичную функцию
    
    
    
        printf("\n %s", Phone1.GetName());        // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n %i", Phone1.GetPrice());      // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n %i", Phone1.GetQuantity());  // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n %i", Phone1.SalesPlan);     // получил доступ к значению статической переменной
        PlanCompletion a;
        a.PlanCompletionCalc();
        getchar();
    }
MyClass.h

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
   #pragma once
    #include <iostream>
    class MyClass
    {
    public:
        MyClass();
        ~MyClass();
        
        // обьявил публичные методы для получения и передачи значений приватных переменных
        void SetName(const char*  name);
    
        const char * GetName();
    
        void SetPrice(int price);
    
        int GetPrice();
    
        void SetQuantity(int quantity);
    
        int GetQuantity();
    
        void RandNumOfSales();
    
        private:
        const char * Name;  //
        int Price;         // обьявил приватные переменные
        int Quantity;     //   
    protected: static double NumOfSales;      // обьявил защищенную статическую переменную 
    public: static const  double SalesPlan ; // обьявил статическую переменную
    };
    
    class PlanCompletion : MyClass
    {
        public:
            
            PlanCompletion();
            void   PlanCompletionCalc();
        
    };
MyClass.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
#include "pch.h"
    #include "MyClass.h"
    #include <iostream>
       
    // определил n публичные методы для получения и передачи значений приватных переменных
    
    const double MyClass::SalesPlan = 20;
    double MyClass::NumOfSales;
      void  MyClass :: SetName(const char *  name)
    {
        Name = name;
    }
    
    const char * MyClass::GetName()
    {
        return Name;
    }
    
    void MyClass::SetPrice(int price)
    {
        Price = price;
    }
    
    int MyClass::GetPrice()
    {
        return Price;
    }
    
    void MyClass::SetQuantity(int quantity)
    {
        Quantity = quantity;
    }
    
    int MyClass::GetQuantity()
    {
        return Quantity;
    }
    
    void MyClass::RandNumOfSales()
    {
         NumOfSales = rand() % Quantity ;
    }
    
    
    MyClass::MyClass()
    {
    
    }
    MyClass::~MyClass()
    {
    }
PlanCompletion.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "pch.h"
    #include "MyClass.h"
    #include <iostream>
    
    PlanCompletion::PlanCompletion()
    {
    
    
    
    }
    
    
    void PlanCompletion :: PlanCompletionCalc()
    {
    
            double  Complet = (MyClass::NumOfSales / MyClass::SalesPlan) * 100;
            printf("\n Было продано %d телефона(ов) из требуемых %d ", MyClass::NumOfSales, MyClass::SalesPlan);  // получил доступ к значению static protected переменной
            printf("\n План выполнен на %d %", Complet); 
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2019, 16:49
Ответы с готовыми решениями:

Enum перечисление переменных и присвоение им значений
добрый день, работаю в среде qt, застала проблема в оптимизации кода, хочу перечислить переменные и...

Изменение значений переменных из родительского в классе наследника
Добрый день. Есть два класса Class1 и Class2. В Class2 я прописал typedef Class1 base; И...

Передача значений переменных функциями
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки). int...

Static поля в классе и инициализация
Мне нужен класс, у которого было бы общие переменные и функции их устанавливающие \ читающие для...

1
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
10.05.2019, 17:18 2
Лучший ответ Сообщение было отмечено xxXasArxxFaTexx как решение

Решение

Цитата Сообщение от xxXasArxxFaTexx Посмотреть сообщение
При использовании приведенного ниже кода, передаваемое значение SalesPlan = 1078231040, а NumOfSales = 0
xxXasArxxFaTexx, Это всё потому, что не нужно смешивать С++ и Си.
Цитата Сообщение от xxXasArxxFaTexx Посмотреть сообщение
C++
1
printf("\n Было продано %d телефона(ов) из требуемых %d ", MyClass::NumOfSales, MyClass::SalesPlan);
%d - для вывода int
%f - double
MyClass::NumOfSales и MyClass::SalesPlan являются double.
Дальше, я думаю, Вы догадаетесь что к чему.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2019, 17:18
Помогаю со студенческими работами здесь

Объявление static переменной в классе
class Worker { private : struct WorkerItem { UnicodeString fio; UnicodeString...

Присвоение значения переменной в классе
возможно ли присвоение значения переменной в классе? class xxx { public : void rrr(); public :...

Как работают static-переменные объявленные в в базовом классе?
Информации увидел много, но суть так и не могу уловить. Образовалась пара вопросов: 1. Если я...

Как объявить в классе static-массив, не используя cpp файлы
Есть шаблон. В шаблон в качестве аргумента надо передать массив. Именно в качестве аргумента...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru