Перейти к содержанию
    

С дуба рухнул

Участник
  • Постов

    12
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Непонятно. Я о инициализации структур писал. https://stackoverflow.com/questions/370283/...mber-in-a-class Пойду лучше на stackoverflow, там люди отвечают без наездов
  2. class T { private: const int m_i = 5; }; Не вопрос вообще. Теперь я знаю, что это Вы мало что знаете? Синтаксис и только. Подумал, что может есть что то типа with из Дельфи (выше писал) или как-то иначе. //header typedef enum { ACC_05, ACC_10 } eMeterAccuracy; template <class T> struct INFOTYPE { T type; string desc; bool isVer;// optional }; static const INFOTYPE <eMeterAccuracy> meterAccuracyInfo[]; // cpp const CProduction::INFOTYPE <CProduction::eMeterAccuracy> CProduction::meterAccuracyInfo[] = { {ACC_05, "0.5"}, { ACC_10, "1.0" }, Какое - то нагромождение уточнения области CProduction:: каждый раз Нет чего нибудь навроде with CProduction { const INFOTYPE <eMeterAccuracy> meterAccuracyInfo[] = }; ? Или вообще других методов создания таких таблиц, не падая до дефайнов, непривязанному ни к какому классу кода и подобным вещам?
  3. Вы по существу семантики скажете когда нибудь что нибудь? Не надо мне о дизайне. Хотя если знаете что нибудь, напишите. А то продемонстрировать "я дартаньян, майкрософт дебилы" а в итоге уйти на общий треп "это не с++ это плохой дизайн, читал я банду четырех, не согласен со всеми четырьмя, колхоз " - это я сам могу. Пожалуйста, не отвечайте мне более, тем более вы меняете свои ответы задним числом, после возражений на них, это неприятно. "Доступ к этим данным должен осуществляться ЧЕРЕЗ соотв. методу, но напрямую - НИКОГДА." Вы просто начитались книжек. Для начала эти данные надо создать, причем я уже показал, вполне себе константно. Вы с вашими геттерами-сеттерами тут вообще мимо кассы
  4. Ваш багаж знаний неужели кончился? Попрошу еще ответов не от Вас пожалуйста, слушать ваше детское "сам дурак мало били *надоело А потом следить за когерентностью энумов, особенно когда их за сотню? И вместо простого и понятного {jan,31} иметь два энума, в которых не дай бог что либо не по порядку пойдет. Не, на таком уровне я и define могу. А потом в исходную структуру добавится поле, указатель на уже реальную переменную, которую надо инитить в конструкторе, и мне вешаться с вашими энумами. Ясно все. Просто многословный язык. Кстати применения constexpr так и не привели. А вы всегда меняете исходные сообщения после того как вам ответили? Не знаете как создать константную расшаренную таблицу на все экземпляры и потомков, а советуете книжку почитать. Вы правда думаете, что вопрос от нечего делать? Рефакторю код одного му.. специалиста с энумами на 500 записей, 5 штук, все должны соответствовать друг другу. Непонтно чем он думал, видимо
  5. class baseCalendar { protected: enum class monthT {jan, feb, march, april}; struct monthInfo { monthT month; int daysCnt; }; static const monthInfo m_monthInfo[]; }; const baseCalendar::monthInfo baseCalendar::m_monthInfo[] = { {baseCalendar::monthT::jan, 31}, {baseCalendar::monthT::feb, 28}, {baseCalendar::monthT::jan, 31}, {baseCalendar::monthT::april, 30}, }; class CRussianCalendar : public baseCalendar { // а тут мне нужны константы, данные в базовом классе, а точнее m_monthInfo, так вот мне интересно, что предлагают гуру под словами "переписать все. ты дно. юзай constexpr. ". Они ж в другом файле по советам советчиков, а путин сказал, что мало работаем, в феврале 35 дней будет. Мне теперь всех наследников переписывать? Или заниматься субклассированием сущностей с одной идиотской целью поменять константы? }; Подскажите, что и как переписать, я начинающий, вчера книгу купил с++ за 21 день, но непонятно.
  6. Чем тут помогло и где оно constexpr? Вы нарисовали Сишный вариант, что я уже рисовал выше. Так и до define дойдем. В cpp файле совершенно необязательно реализация одного класса, и код такой засоряет. В Дельфи есть with http://www.delphisources.ru/pages/faq/faq_...s/With.php.html , в срр такого, как я понял нет. Правда неуверен, что в Дельфи он сможет сделать абсолютно то, что хотел, но направление именно такое хотел. И пожалуйста, не надо выкладывать тут весь свой огромный багаж знаний, сторожить некому. Достаточно написать было "код в начале топике упростить нельзя.
  7. Вот пожалуйста https://msdn.microsoft.com/ru-ru/library/cz0a83sb.aspx именованные режимы открытия файлов - статически константы класса, и если Вы считаете, что Майкрософту до Вас как до Луны - могу дать других примеров подобного рода, даже не посылая в гугл И да, я погуглил, увы. Может натолкнете , как constexpr позволит создать статические инициализированные константные по-сути своей таблицы? Update - не, наврал, они enum нарисовали и ручками значения забили. ОК, поищу более похожее позднее И да, Мейерса тоже не били? https://habr.com/post/147373/
  8. Я не спрашивал "зачем", я просил "как". MSDN говорит, что правильно все, нельзя not an integral type, use a member-definition statement. Мне нужен static const. Да и даже начихав на расход памяти для дублежа на каждый экземпляр такого класса с не static членами - ничего не выйдет, структура это non integral тип, и так инициализировать ее нельзя. Будет уже https://docs.microsoft.com/en-us/previous-v...3ks1w(v=vs.120) cannot specify explicit initializer for arrays Причем тут шаблонные классы вообще? Вопрос был как проиниициализровать статическую константную структуру всего лишь
  9. У меня в классе есть несколько windows control. У них у всех есть свой ID. Контролы попарно связаны, их кол-во тоже хардкодить не очень хочется. Вот совсем если просто в Си typedef struct { int a; int b; } pair_t; pair_t pairs[] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; for (int i = 0; i < sizeof(pairs) / sizeof(pairs[0]); i++) // some stuff Так делают многие, это нормально читается. В плюсах хочу иметь тоже самое. Как не "хуже уже точно" сделать? Мне нужны константные пары, общие для всего класса, то бишь статики. Ничего в конструкторы пихать не надо, все считается при компиляции. Если Вы "не дно" то предложите как надо. Пары должны быть в пространстве имен класса, define в садик. Вот такие вот ошибки https://docs.microsoft.com/en-us/previous-v...kb76w(v=vs.120)
  10. // h file class CViewXXX { .... struct frame_cntrl_pairT { int idOnline; // int idSetup; // }; static const frame_cntrl_pairT m_onlineData[]; }; //cpp file const CViewXXX::frame_cntrl_pairT CViewXXX::m_onlineData[] = { {1,2}, {3,4}, {5,6}, }; Многовато для такой мелочи. Если же типы в frame_cntrl_pairT не int, а , например, шаблонные типы, то все становится просто безумно малочитаемым. Как делаете? define не вариант
×
×
  • Создать...