Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.79/43: Рейтинг темы: голосов - 43, средняя оценка - 4.79
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
1

Как обычную переменную на время сделать константой?

14.07.2013, 10:32. Просмотров 7870. Ответов 66
Метки нет (Все метки)

Как обычную переменную на время сделать константой?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2013, 10:32
Ответы с готовыми решениями:

Как обычную переменную сделать константой
Как можно константой сделать обычную переменную, а то хочу создать матрицу nxn а мне VS требует что...

Как из переменной окружения сделать обычную переменную?
В общем, такая ситуация: нужно переменную окружения PATH сделать обычной переменной. Каким образом...

Цикл в delphi. Сделать переменную константой в цикле
Вообщем у меня цикл - там огромные формулы... и в итоге с каждым началом нового действия цикла...

Как сделать, чтобы "*" принимали как обычную переменную?
как сделать чтобы * принимали как обычную переменную??

66
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
19.07.2013, 17:47 61
Цитата Сообщение от IGPIGP Посмотреть сообщение
Там ей и лучше будет. Перенесите код, раз он понравился в функцию сеттер для этой переменной и будет работать.
Отлично! Так и сделаю.
0
146 / 116 / 37
Регистрация: 27.10.2011
Сообщений: 690
19.07.2013, 17:53 62
Цитата Сообщение от kotgav Посмотреть сообщение
Не класса, а программы. Подразумеваю переменную, которая определена и инициализирована вне функций, в верхней части программы. Чтобы в нее можно было поймать начальное значение переменной и использовать его как постоянную величину.
А при использовании класса она просится в класс. Но тогда будет ли она обладать такой возможностью?
Вот это мне пока непонятно.

Если это не получится, то есть варианты от IGPIGP с двумя функциями и без глобальной переменной.
Т.е. тебе нужна переменная в классе, в которую нужно по ходу программы занести значение, и затем обращаться к этой переменной для извлечения этого значения? Тогда переменная в классе вполне подойдет. Если ты собираешься реализовывать класс таймера, то советую эту переменную сделать private (ибо весь код таймера будет внутри класса, и обращения к этой переменной извне не должно происходить). Если ты уверен, что тебе нужно лишь единожды занести значение в переменную , а затем только извлекать это значение, то лучше использовать константу (так же внутри класса, разумеется)
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
19.07.2013, 18:00 63
Цитата Сообщение от Nikitko_Cent Посмотреть сообщение
Т.е. тебе нужна переменная в классе, в которую нужно по ходу программы занести значение, и затем обращаться к этой переменной для извлечения этого значения? Тогда переменная в классе вполне подойдет. Если ты собираешься реализовывать класс таймера, то советую эту переменную сделать private (ибо весь код таймера будет внутри класса, и обращения к этой переменной извне не должно происходить). Если ты уверен, что тебе нужно лишь единожды занести значение в переменную , а затем только извлекать это значение, то лучше использовать константу (так же внутри класса, разумеется)
Да, нужно в каждом экземпляре класса обратиться к переменной единожды и занести в нее начальное значение из другой переменной. И это начальное значение не изменять ни при каких изменениях значений этой другой переменной.
С константой были примеры, я это вариант помню. Посмотрю, как в классе она работает.
1
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
19.07.2013, 18:42 64
Поленился прочитать тему целиком, может кому поможет, если вариант с классами, то если переменная одна, можно сделать к ней флажок, типа bool например, и гетер с сетером, инициализировать при первом заходе в сетер, поднять флажок и больше не изменится.
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.07.2013, 15:26 65
Цитата Сообщение от Nixy Посмотреть сообщение
Поленился прочитать тему целиком, может кому поможет, если вариант с классами, то если переменная одна, можно сделать к ней флажок, типа bool например, и гетер с сетером, инициализировать при первом заходе в сетер, поднять флажок и больше не изменится.
Спасибо, тоже пригодится!

Добавлено через 18 часов 22 минуты
============================================================ =============
Почему-то новое мое сообщение добавляется к прежнему, а не создается как новое.
Поэтому получается очень большое сообщение.
============================================================ =============

Сделал пример "замораживания" переменной с классом. Как мне и подсказывали, работает и без глобальной переменной. Понравилось.
Итак, создал заголовочный файл для описания класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once     // Исключаем повторное подключение заголовочных файлов
 
#include <iostream>
using namespace std;
 
class Measurer         // класс Измеритель
{
public:
    int setdata(int d);   // метод (функция) класса. Аргумент d - входная переменная с текущим изменяемым значением   
 
private:
    int a;             // глобальная вспомогательная переменная
    int b;             // переменная с неизменяемым начальным значением переменной d
    int c;             // текущая разность
 
protected:
 
};
Создал файл исходных кодов с логикой класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include "Sht_Classes.h"
 
 
int Measurer::setdata(int d)         // метод класса 
{
    if (a < 0)
    {
        a = d;    // замораживаем начальное значение в глобальной переменной
    }
    b = a;        // присваиваем замороженной значение временной константе
    c = d - b;    // текущая разность
    cout << "Временная константа a= " << a << " Текущая разность c= " << c << endl;
    return c;
}
В основном файле исходных кодов с главной функцией создал объект моего класса:
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 "stdafx.h"
#include <iostream>
#include "Sht_Classes.h"
using namespace std;
 
 
// Главная (вызывающая) функция
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    Measurer PrMeter;       // определяем объект PrMeter класса Measurer
    int i;                  // входная переменная с текущим значением
 
    // устанавливаем значения объекта с помощью метода класса Measurer   
    for(i=1; i<5; ++i)
    {
        PrMeter.setdata(i);
    
    // выводим на экран текущие значения переменной i    
       cout << "Входная переменная i= " << i << "\n" << endl;
       system ("pause");
    }
 
    return 0;
}
Остались вопросы, подскажите пожалуйста.
1. Среда требует возвращаемой переменной. Я поставил с - текущую разность. Но в примерах в книжках есть классы и без return и разобраться в том, когда нужен return, а когда нет я не смог.
2. Не понял также, как вывести в экземпляре класса (в моем объекте) переменную из класса? Конкретно, захотел вывести вместе с "i" также и текущую разность "c" вот в этой строчке экземпляра класса:
cout << "Входная переменная i= " << i << "\n" << endl;

Добавлено через 2 часа 12 минут
Дополнение по вопросам.
По пункту 2 разобрался - переменная с была защищена. Перенес ее в public и ее значение PrMeter.c прекрасно выводится из основного файла (с главной функцией).
Это вопрос закрыт.
0
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.07.2013, 15:56 66
Ну если нет необходимости возвращать сделайте метод void, а если не void то всегда нужно что-то вернуть
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.07.2013, 15:57 67
Цитата Сообщение от Nixy Посмотреть сообщение
Ну если нет необходимости возвращать сделайте метод void, а если не void то всегда нужно что-то вернуть
О, точно! Забыл.
Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2013, 15:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сохранить значение адреса указателя в обычную переменную?
Всем привет. Пишу лабиринт на C++. С языком знаком мало. В общем, я в курсе, что можно в функцию...

Как сделать вводимое с консоли значение константой?
Например я ввожу значение с консоли a = Convert.ToInt32(Console.ReadLine()); как сделать a -...

из массива в обычную переменную
есть char'овский массив такого содержания &quot;100&quot; как перенести этот массив в обычную переменную...

Как сделать обычную кнопку в режиме ключа?
Добрый день! Есть кнопка типа Button (решение с ToggleButton не подходит), мне нужно сделать,...


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

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

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