![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Всем Доброго времени суток)
пытаюсь написать примитивный скриптовый язык. начал из далека, и первым решил сделать стек где будут храниться переменные используемые в скрипте. По сути стек у меня это связанный список. вот так выглядит сам элемент переменной
в общем ничего такого уж сложного нету, и это работает, но мне очень не нравится как получилось сделать хранение оригинального типа данных. массив для хранения значения битовый и что бы засунуть числовое значение а потом его получить, хочется то же сделать шаблонную функцию, которая будет в зависимости от типа хранимой переменной возвращать разные типы а не просто массив бит... делать весь класс шаблоном как то не хочется, потому что тогда получается что весь список будет принадлежать какому то конкретному классу. есть мысли как это можно немного переиграть? -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
sizefo( b ) равен размеру указателя, а не выделенной памяти -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
borisbn, по поводу буфера я не думал пока, как его лучше хранить, это пробный вариант... но и кстати, в случае char и bool он выделяет 1 байт, а когда передаю int - 4...
суть не в этом, можно что нибудь получше придумать с запоминанием типа переменной? Добавлено через 12 минут и 52 секунды у меня была мысль сделать класс шаблоном но есть касяк:
точно такое же возникает при объявлении ссылки на первый элемент, которая при отсутствии элементов просто нулевая... а получается что нужно заранее указать ее тип -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Язык С++ - это язык со статической типизацией (даже с учетом шаблонов - они раскрываются в статические типы compile-time). Вы же пытаетесь сделать интерпретатор с run-time динамической типизацией (насколько я понял). Т.е. никакие конструкции С++ вам в этом не помогут
![]() ![]() |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
xvr, ну это слишком гибко, круто конечно, но я даже не думал делать так. мысль то была что в скриптовом языке будут указываться типы переменных, но сам так называемый "стек" хотел сделать более гибким.
можно было бы сделать шаблонный класс, но тогда пришлось бы для каждого типа данных делать свой список. а я как раз хотел что бы этого делать не приходилось... и список был общий.... даже, бонально, на поиске имени переменной было бы проще. нежели перебирать несколько списков. хотя, с другой стороны ты навел на мысль сделать сложнее) но проще использовать) погуглю, попробую, отпишусь) -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
ZC1989, посмотри в эту сторону
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
borisbn, давно еще читал про эту библиотеку, но совершенно забыл!
уже читаю) спасибо) -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Вот этого как раз делать не надо. Одна и та же переменная в динамическом скриптовом языке может в разное время хранить данные разных типов. Никакой шаблон этого делать не умеет. Нужен всего один С++ тип для любого значения (и не только для переменных) - динамически типизированное значение. Например -
|
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
ZC1989, если вы знакомы с C++Builder или Delphi, то можете покопаться в классе TVariant. Вроде бы, это как раз то, про что говорит
xvr. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
artsb, с++ булдер и делфи не особо знаю, так, абстрактно... поэтому их тонкостей я не знаю... в основном пользуюсь Си наследованными языками...
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ну вообще то TVariant это не 'их тонкости'. Это всего лишь обвертка над VARIANT, который в свою очередь пришел из мира ActiveX, а он [ActiveX] и был придуман для поддержки реализации скриптовых языков. Почитайте в MSDN (хотя в вашем случае это наверное будет чересчур) |
|||
|
||||
Result |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 15.5.2011 Репутация: 2 Всего: 5 |
Еще можно посмотреть как в Пайтоне представлены переменные И объекты, и возможно позаимствовать подход в своих наработках.
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Хммм... интересно... Не подскажете, где именно посмотреть ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |