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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удобных конфиг 
:(
    Опции темы
Леопольд
Дата 23.10.2010, 19:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Тигер @  23.10.2010,  19:58 Найти цитируемый пост)
можно - при коммпиляции 
Это хардкод... smile


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Тигер
Дата 23.10.2010, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



это зависит от поставленной задачи. в рамках данной задачи это удобный кофиг =)
и да.

variant s("5");
int i=s.as<int>();
error C2062: type 'int' unexpected

что значит тип неожиданный..

Это сообщение отредактировал(а) Тигер - 23.10.2010, 20:11
PM MAIL   Вверх
mes
Дата 23.10.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(Тигер @  23.10.2010,  19:02 Найти цитируемый пост)
что значит тип неожиданный..

значит в данном контексте он не ожидается.. 
возможно у вас функция as не шаблоная..
в общем не глядя на код трудно сказать.. 



--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

class variant {
        public:
            variant(const std::string& s):str(s) {}
         template<typename T>
            T as() const {
                T result;
                std::stringstream ss(str);
                ss >> result;
                return result;
         }
        private:
            std::string str;
};

PM MAIL   Вверх
Тигер
Дата 23.10.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как я понял есть такой паттерн - Variant или Any
нашёл несколько реализация, но мне нравится реализация которая тут выше, а она не работает.
PM MAIL   Вверх
mes
Дата 23.10.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



или то место где ошибка не показали , или компилятор у Вас староват :

http://liveworkspace.org/code/deae7dfc1c3e...ce4541a4b2421c1


--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



VC6 =)
у меня необходимость использовать имено VC6 к сожелению. что посовутуете?

Добавлено через 5 минут и 16 секунд
вот так ошибку не выдает но и не работает
исключение вылетает при запуске программы
Код

class variant {
        public:
            variant(const std::string& s):str(s) {}
         template<class T>
             T as() const {
                T result;
                std::stringstream ss(str);
                ss >> result;
                return result;
         }
         template <class T>
             operator T () {
                return this->as<T>();
         }
        private:
            std::string str;
};


PM MAIL   Вверх
mes
Дата 23.10.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(Тигер @  23.10.2010,  19:40 Найти цитируемый пост)
 имено VC6 к сожелению.

а так работает ?  :
Код

template<typename T>
 T as (std::string & str) {
     T result;
     std::stringstream ss(str);
     ss >> result;
     return result;
  }
...
  std::cout << as<int>("5");



--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот так работает...
    
Код

string str("5");
      std::cout << as<int>(str);

но это не вариант =) всмысле неудобно и в массив не загонишь никак

Это сообщение отредактировал(а) Тигер - 23.10.2010, 21:03
PM MAIL   Вверх
mes
Дата 23.10.2010, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(Тигер @  23.10.2010,  20:02 Найти цитируемый пост)
всмысле неудобно и в массив не загонишь никак

а если подумать ? smile


--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



хз =)
статику в функции заюзать и хранить указатель на функцию? а как различать присвоение от вывода?

меня вот такой вариант устраивает =)
http://liveworkspace.org/code/96e9c7184033...e0d119a670e125f
только не понятно почему не работает такой
http://liveworkspace.org/code/fd2324d1a3fb...40cf61e2d6d2796

Это сообщение отредактировал(а) Тигер - 23.10.2010, 21:19
PM MAIL   Вверх
mes
Дата 23.10.2010, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(Тигер @  23.10.2010,  20:18 Найти цитируемый пост)
только не понятно почему не работает такой

потому что cnf["key1"] = .. вне функции 




--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мм. а разве нельзя в глобальной области так делать? тоесть мне впринципе нужен глобальный контейнер
PM MAIL   Вверх
mes
Дата 23.10.2010, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(Тигер @  23.10.2010,  20:18 Найти цитируемый пост)
а как различать присваение от вывода?

если нельзя определять шаблоные функции внутри класса, то придется сделать шаблонную функцию внешней, а в классе прокси функции для удобного пользования.. 

т.е. 
Код

class variant {
  int as_int () { return lex_cast<int>(str); }
...

а если применить в дополнение паттерн pimpl, точнее его разновидность _виртуальный конструктор_ то, можно избавиться и от лишних new, т.е. будет просто:  variant v1 (5), v2 ("string");

Добавлено через 3 минуты и 11 секунд
Цитата(Тигер @  23.10.2010,  20:28 Найти цитируемый пост)
мм. а разве нельзя в глобальной области так делать? тоесть мне впринципе нужен глобальный контейнер 

определить и инициализировать можно, а присвоение уже должно быть внутри функции, которую к примеру можно вызвать первую в main.. или написать класс в конструкторе которого идет нужная инициализация и создать его объект пред маин.. но лучше смотреть тогда паттерн singleton.. 



--------------------
PM MAIL WWW   Вверх
Тигер
Дата 23.10.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



плюнул и сделал так...
Код

template<class T>
class variant {
        public:
            variant(const std::string& s):str(s) {}
             T as() const {
                T result;
                std::stringstream ss(str);
                ss >> result;
                return result;
             }
             operator T () {
                return this->as();
             }
        private:
            std::string str;
};

мм а зачем тут singleton? нам же впринципе без разницы сколько экземпляров мы будем создавать, только память правда расходуется...

Это сообщение отредактировал(а) Тигер - 23.10.2010, 21:54
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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