Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
#1

Касательно const и внешних файлов. - C++

13.12.2011, 10:42. Просмотров 546. Ответов 10
Метки нет (Все метки)

Все мы знаем, что const объявленная в начале модуля...например как глобальная переменная, не дает возможности больше менять значение. Ну как и в любом др. месте программы.
Например у меня есть поле. В начале работы программы я хотел бы установить значения длины и ширины:
const short Sirina =20;
const short Dlina =10;
чтобы всю работу дальнейшую ссылаться на константные величины. соотв. во время работы программы поля не меняются. Но! теперь вопрос! Как задать эти величины константные при начале работы программы?
Вариант например такой, чтоб данные значения хранить в текстовом файлике и при загрузке как бы считывать. хотя...с другой стороны было бы удобней, чтоб в самой программе можно было устанавливать размеры поля, а дальше они были бы константными.
Надеюсь изьяснил суть вопроса доступно. Спасибо всем за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 10:42     Касательно const и внешних файлов.
Посмотрите здесь:

Программирование с использованием внешних файлов - C++
Необходимо переделать данную программу, что бы "Путь и имя файла вводились с клавиатуры". #include "stdafx.h" #include <cstdio> ...

Обработка строковых данных с использованием внешних файлов - C++
Люди добрые, есть такая проблемка, в общем имеется текст: "The Old Man and the Sea is the story of an epic struggle between an old, ...

Разница между объявлениями const Person p1 и Person const p1 - C++
Всем привет. Собственно весь вопрос уместился в заголовок: в чем разница между объявлениями const Person p1 и Person const p1, если...

Касательно конструктора копирования - C++
Вопрос следующий. У меня есть класс "Точки" есть класс "группы" и есть класс "возможные группы". 3 класса. в классе "группы" есть...

Касательно указателей и ссылок. - C++
Цитирую фразу из популярной ныне книги Айвора Хортона. "Никогда не возвращайте из функции ссылку на локальную переменную" Так вот. Не...

Касательно указателей и функций - C++
Уважаемые, назрел вот какой вопрос. Делаю вот так: TVozmGrup MassVG; GetVGArroundVG(MassVG); void GetVGArroundVG(TVozmGrup...

Касательно оптимизирующего компилятора - C++
Здравствуйте, вопрос следующего плана в if имеется конструкция следующего вида i < iL && bitv.letter != el Если не выполняется...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
13.12.2011, 11:59     Касательно const и внешних файлов. #2
не знаю, может вам класс создать типа такого
C++
1
2
3
4
5
6
7
8
9
struct Settings
{
public:
    Settings(int x, int y): w(x), h(y) {}
 
public:
    const int w;
    const int h;
};
а если нужно в единственном числе чтобы было, то сделать из него синглтон
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
13.12.2011, 12:13  [ТС]     Касательно const и внешних файлов. #3
к стати вот действительно альтернативное решение.надо будет проверить.спасибо.

Добавлено через 9 минут
нет. к сожалению код не рабочий. и константу не хочет присваивать. А вот "синглтон" - это что?
Bers
Заблокирован
13.12.2011, 12:13     Касательно const и внешних файлов. #4
C++
1
2
3
4
5
6
7
8
struct Settings
{
public:
* * Setgs(int x, int y): w(x), h(y) {}
public:
* * const int w;
* * const int h;
};
Ток нужно иметь ввиду, что это "ненастоящие" константы. Они не являются константами времени компиляции, и не обладают свойствами настоящих констант))

хитрая константа не даёт создать обычный массив
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
13.12.2011, 12:15     Касательно const и внешних файлов. #5
Цитата Сообщение от Андрей2011 Посмотреть сообщение
сожалению код не рабочий
почему?

Цитата Сообщение от Андрей2011 Посмотреть сообщение
А вот "синглтон" - это что?
паттерн проектирования, (одиночка)

Добавлено через 51 секунду
поменяйте конструктор .. ошибся я нечайно
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
13.12.2011, 12:30  [ТС]     Касательно const и внешних файлов. #6
Я был не прав. В целом работает. И даже решает мою проблему. Правда код немного доработал:
C++
1
2
3
4
5
6
7
8
9
class TConstPole
{
public:
    TConstPole(const short Sirina=5,const short Dlina=5) :
    FSirina(Sirina), FDlina(Dlina) {}
 
    const short FSirina;
    const short FDlina;
};
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
13.12.2011, 12:35     Касательно const и внешних файлов. #7
Bers, там у вас строка 6 не компилилась при создании массива, так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Settings
{
public:
    Settings(int x, int y): w(x), h(y)
    {
        int A[w]; //вот эта
    }
 
 
public:
    const int w;
    const int h;
};
но тут то все компилится, значит это "настоящие" константы? ))
Bers
Заблокирован
13.12.2011, 12:37     Касательно const и внешних файлов. #8
Цитата Сообщение от PointsEqual Посмотреть сообщение
но тут то все компилится, значит это "настоящие" константы? ))
Ну скажем так, массив статик или стековый с такими константами не сделаешь)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.12.2011, 18:30     Касательно const и внешних файлов. #9
Цитата Сообщение от PointsEqual Посмотреть сообщение
но тут то все компилится, значит это "настоящие" константы?
Это variable-length массив, попробуйте написать вот так:
C++
1
2
3
4
    Settings(int x, int y): w(x), h(y)
    {
        int A[w] = { 0 }; //вот эта
    }
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
13.12.2011, 18:38     Касательно const и внешних файлов. #10
source.cpp:12:21: error: variable-sized object 'A' may not be initialized

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2011, 18:43     Касательно const и внешних файлов.
Еще ссылки по теме:

Касательно вирт. функций - C++
пусть есть некий базовый класс с открытой чисто виртуальной функцией x. Данный класс имеет дочерний конкретный класс с переопределенной под...

Касательно ситуации каскадирования методов - C++
Есть никий класс Date, в нем существует такой перегруженный метод присваивания: const Date& Date::operator=(const Date& bday); ...

Int* const или const int*? - C++
class A { public: A() : x(777) {} int* const GetX() { return &x; }

Создание внешних модулей в С++ - C++
Как создать внешний файл с функциями наподобие модулей в Pascal? Скажите пожалуйста...

Выделение внешних переменных - C++
Сделал программу, которая выделяет внешние переменные. Подаю в программу код/текст кода извне. Проблема в том, что программа работает не...


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

Или воспользуйтесь поиском по форуму:
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
13.12.2011, 18:43  [ТС]     Касательно const и внешних файлов. #11
всем спасибо. вроде осознал.
Yandex
Объявления
13.12.2011, 18:43     Касательно const и внешних файлов.
Ответ Создать тему
Опции темы

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