Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
xxXasArxxFaTexx
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 53
1

Статические переменные в классе не сохраняют заданное им значение

17.05.2019, 22:04. Просмотров 162. Ответов 4
Метки нет (Все метки)

Мне нужно что бы несколько переменных в классе задавались конструктором класса и сохраняли свое значение для каждого обьекта класса. Как я понял,для этого нужно использовать static переменные. Сначала я обьявляю их в header
C++
1
2
3
4
private:
static  std::string Name;  //
static  float Price;         // обьявил приватные переменные
static  int Quantity;     //
Потом в файле класса

C++
1
2
3
float SmartPhones::Price=0;
int SmartPhones::Quantity=0;
std::string SmartPhones::Name = "";

Далее определил конструкторы ,которые меняют их значение
C++
1
2
3
4
5
6
7
8
9
10
11
12
SmartPhones::SmartPhones(int quantity)
{
    Quantity = quantity;
}
SmartPhones::SmartPhones(std::string name)
{
    Name = name;
}
SmartPhones::SmartPhones(float price)
{
    Price = price;
}
И конструктор который должен выводить их значения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
SmartPhones::SmartPhones()
{
    printf("Class SmartPhones opened");
    if ( Price != 0 && Quantity != 0)
    {
 
        std::cout << "Name:" << SmartPhones::Name;        // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n Price: %f", SmartPhones::Price);      // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n Quantity: %i", SmartPhones::Quantity);  // получил доступ к значению приватной переменной используя публичную функцию
        printf("\n--------------------------");
 
    }
}
Проблема в том,что в итоге выводятся рандомные значения вроде -89081789798?причем при отладке видно что переменные Name,Price,Quantity имеют нужные значения. В чем проблема?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2019, 22:04
Ответы с готовыми решениями:

Почему сохраняют временное значение в регистре R16?
Здорово, парни. А вот что-то я знал да забыл. Почему при написании программы для ATMega на...

Почему в локальном классе доступны финальные переменные или переменные инициализированные при объявлении
Добрый вечер. Объясните пожалуйста, почему в локальном классе могут использоваться только финальные...

Статические переменные
Здравствуйте, искал инфу в интернете про статические переменные. Люди говорят разные вещи про...

статические переменные
class A { public: A(){} void f() { A::_a = this; } private: static A *_a;

Статические переменные
В чем польза использовать статические переменные вместо обыкновенных публичных в определении...

4
oleg-m1973
1037 / 723 / 270
Регистрация: 07.05.2019
Сообщений: 2,331
Записей в блоге: 1
17.05.2019, 22:20 2
Цитата Сообщение от xxXasArxxFaTexx Посмотреть сообщение
Мне нужно что бы несколько переменных в классе задавались конструктором класса и сохраняли свое значение для каждого обьекта класса.
Думаю, тебе нужно совершенно не это.
Тебе явно поставили какую-то задачу, вот и озвуч её условия, для начала.
Конечно здорово, то ты попытался её решить, но, даже не зная условий задачи, можно сказать что ты не туда пошёл.
0
xxXasArxxFaTexx
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 53
18.05.2019, 00:14  [ТС] 3
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Думаю, тебе нужно совершенно не это.
Тебе явно поставили какую-то задачу, вот и озвуч её условия, для начала.
Конечно здорово, то ты попытался её решить, но, даже не зная условий задачи, можно сказать что ты не туда пошёл.
У меня задача - использовать несколько перегрузок конструктора для изменения данных внутри класса. Вот я и пытаюсь это сделать
0
zayats80888
1752 / 979 / 419
Регистрация: 07.02.2019
Сообщений: 2,654
18.05.2019, 00:20 4
Цитата Сообщение от xxXasArxxFaTexx Посмотреть сообщение
использовать несколько перегрузок конструктора для изменения данных внутри класса.
задача конструктора - иницализация данных, и он вызывается один раз при создании объекта
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
5512 / 2689 / 739
Регистрация: 18.10.2014
Сообщений: 4,766
18.05.2019, 04:42 5
Цитата Сообщение от xxXasArxxFaTexx Посмотреть сообщение
Проблема в том,что в итоге выводятся рандомные значения вроде -89081789798?причем при отладке видно что переменные Name,Price,Quantity имеют нужные значения. В чем проблема?
В том, что вы рассказываете какие-то невероятные сказки про ваш код и его поведение, вместо того, чтобы просто показать код целиком.

То, что вы делаете в коде - это, конечно, издевательство над классами, но никаких "рандомных значений вроде -89081789798" тут нет и быть не может. Вы что-то выдумываете.
0
18.05.2019, 04:42
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2019, 04:42

Статические переменные
Добрый день! AS только начал изучать, и есть одна проблемка с баннером: Баннер должен...

Статические переменные на объект
инициализация статических полей Пытаюсь решить задачу по созданию двусвязного списка. Есть класс...

про статические переменные
почему при перезагрузки страницы $n остается = 1 ? &lt;? function inc() { static $n;...


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

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

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