Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно заполнить структуру? 
V
    Опции темы
Ln78
Дата 20.8.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



Цитата(bsa @  14.8.2008,  23:48 Найти цитируемый пост)
 Делать новый тип:
typedef MyStruct* MyStructPtr;
вредно, так как невозможно сделать указатель на константный объект:

Я не совсем понял, а из того, что никакой typedef не сумеет перемножить два 64-разрядных целых (и поджарить котлеты тоже не сумеет smile ) следует, что сам typedef вреден? А разве не "кесарю кесарево":
Код

   typedef MyStruct* MyStructPtr; 
   typedef const MyStruct* ConstMyStructPtr; 

   MyStruct g_stMystruct("раз", "два");
   const MyStruct g_cstMystruct("три", "четыре");

   MyStructPtr g_pMystruct = &g_stMystruct;
   ConstMyStructPtr g_pcMystruct = &g_cstMystruct;

В чём вред-то?
PM MAIL   Вверх
bsa
Дата 20.8.2008, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Вред в том, что, например, есть такая библиотека DevIL (openil.sf.net). В ней сделан:
Код
typedef char * IL_String;
А затем используется:
Код
IL_Load(const IL_String name);
Все! После этого без const_cast не обойтись! А вся проблема в том, что неопытный программист сделал вредный (для него вредный) typedef.
Я не против typedef. Более того, я даже убить готов тех, кто пишет: vector<vector<vector<vector int> > > array; Но есть вещи, которые делать не стоит. Покрайней мере, пока не осознаешь явную необходимость в них.
PM   Вверх
Ln78
Дата 21.8.2008, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



bsa, понимать, что делаешь, всегда полезно smile .
Но из того, что неопытный программист может сделать какую-то ошибку, не следует категоричный вывод о вредности тех или иных синтаксических конструкций. А как же столь любимые JackYF'ом  LPCSTR, LPSTR и другие подобные определения?

PM MAIL   Вверх
bsa
Дата 21.8.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Ln78 @ 21.8.2008,  06:34)
А как же столь любимые JackYF'ом  LPCSTR, LPSTR и другие подобные определения?

Имхо, WinAPI далеко не лучший пример грамотного дизайна.  smile 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.