Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Динамическое имя


Автор: Буратиныч 15.3.2011, 11:38
Как созидается динамическое имя переменной и извлекается из него значение?

Допустим i=1 и переменной name1 надо присвоить десятку, т.е.
"name" + i = 10
а затем извлечь из из этой переменной значение.

Автор: bsa 15.3.2011, 11:39
Буратиныч, ты сначала сформулируй, что такое "переменная с динамическим именем" и зачем это может быть нужно.

Автор: mes 15.3.2011, 11:43
http://liveworkspace.org/code/5cb3cc3ccf0d8329101c07dd6e4e672f

Автор: Буратиныч 15.3.2011, 11:46
Цитата(bsa @ 15.3.2011,  11:39)
Буратиныч, ты сначала сформулируй, что такое "переменная с динамическим именем" и зачем это может быть нужно.

Сформулировал как смог  smile 
Допустим имеется цикл. Переменная i заранее не известна. Поэтому в зависимости от итерации надо присваивать значения.

name1 = 10
name2 = 20
или 
"name" + i = i * 10;

Автор: mes 15.3.2011, 12:06
http://liveworkspace.org/code/119cc878a00e70ed96b69c871f8d26c8 (подправлено)

Цитата(Буратиныч @  15.3.2011,  10:46 Найти цитируемый пост)
Допустим имеется цикл. Переменная i заранее не известна. 

а про обычные массивы Вы в курсе ?

Добавлено @ 12:11
http://liveworkspace.org/code/19cb2862db5d19ab57183837f046a628

Автор: Буратиныч 15.3.2011, 12:55
Цитата(mes @ 15.3.2011,  12:06)
http://liveworkspace.org/code/216bc71a888f354fcc70694be9a1016f

Добавлено @ 12:10
Цитата(Буратиныч @  15.3.2011,  10:46 Найти цитируемый пост)
Допустим имеется цикл. Переменная i заранее не известна. 

а про обычные массивы Вы в курсе ?

Добавлено @ 12:11
http://liveworkspace.org/code/19cb2862db5d19ab57183837f046a628

mes, спасибо! Но почему выскакивает ошибка?
Error    2    error C2601: 'arr' : local function definitions are illegal

Автор: mes 15.3.2011, 12:57
Цитата(Буратиныч @  15.3.2011,  11:55 Найти цитируемый пост)
 local function definitions are illegal

потому что пытаетесь определить функцию внутри другой функции.. 

Автор: Буратиныч 15.3.2011, 16:11
Хочу из следующих данных:
int name0 = 1;
int name1 = 11;
int name2 = 22;

получить строчку:
name3=22 name2=11 name1=1 name0=1

но  код ниже мне всё нулит. В чём ошибка?
Код

#include <map>
#include <string>
#include <iostream>
#include <sstream>


std::map<std::string, int> ints;

std::string  arr(int i) 
{   
   std::ostringstream os;
   os << "name";
   os << i;
   
   return os.str();
}

int name0 = 1;
int name1 = 11;
int name2 = 22;

int main () 
{
    std::string var = "name";
    
    for (int i=2; i>=0; i--)  
       ints[arr(i+1)] = ints[arr(i)];

    for (int i=3; i>=0; i--)  
      std::cout<< arr(i)<<"="<<ints[arr(i)] << " ";
}

Автор: mes 15.3.2011, 17:51
Цитата(Буратиныч @  15.3.2011,  15:11 Найти цитируемый пост)
но  код ниже мне всё нулит. В чём ошибка?

в том, что не поняли его назначение.. 
для вашего случая подойдут обычные массивы :
http://liveworkspace.org/code/28ff4d017e45b41b6aac84ed8246f077

Автор: Буратиныч 16.3.2011, 12:53
Цитата(mes @ 15.3.2011,  17:51)
Цитата(Буратиныч @  15.3.2011,  15:11 Найти цитируемый пост)
но  код ниже мне всё нулит. В чём ошибка?

в том, что не поняли его назначение.. 
для вашего случая подойдут обычные массивы :
http://liveworkspace.org/code/28ff4d017e45b41b6aac84ed8246f077

Нда, действительно массивы простое и гениальное решение. Только чтобы понять, мне это пришлось повторить дважды  smile 

1) А если размер массива выясняется только в конце цикла, т.е. не известно сколько там будет "name", может только 3, может миллион, то как его объявлять? Сразу резервировать память под миллион элементов?

2) Почему цикл считает вперёд, а не назад, как хотелось бы, начиная с меньшего к большему, а не наоборот:
Код

                            for(hx1 = Hcount-1; hx1 > 1; --hx1) 
                            {
                                for(hx2 = hx1-1; hx2 > 0; --hx2) 
                                {
                                    Hp1 = Hi[hx1];
                                    Hp2 = Hi[hx2];
                                  TRACE(_T("hx1 = %d, hx1 = %d, Hp1 = %d, Hp2 = %d.\n"),hx1,hx2,Hp1,Hp2);


В Output выводит
Код

hx1 = 4, hx1 = 3, Hp1 = 325, Hp2 = 232.
hx1 = 4, hx1 = 2, Hp1 = 325, Hp2 = 169.
hx1 = 4, hx1 = 1, Hp1 = 325, Hp2 = 117.
hx1 = 3, hx1 = 2, Hp1 = 232, Hp2 = 169.
hx1 = 3, hx1 = 1, Hp1 = 232, Hp2 = 117.
hx1 = 2, hx1 = 1, Hp1 = 169, Hp2 = 117.
hx1 = 8, hx1 = 7, Hp1 = 501, Hp2 = 488.
hx1 = 8, hx1 = 6, Hp1 = 501, Hp2 = 431.
hx1 = 10, hx1 = 9, Hp1 = -858993460, Hp2 = -858993460.
First-chance exception at 0x603c2cdd (Patterns.dll) in Broker.exe: 0xC0000005: Access violation reading location 0x3826ccd8.


Значение Hcount = 9

Автор: mes 16.3.2011, 15:21
Цитата(Буратиныч @  16.3.2011,  11:53 Найти цитируемый пост)
 А если размер массива выясняется только в конце цикла

если C++, тo можно просто использовать http://cplusplus.com/reference/stl/vector/operator%5B

Цитата(Буратиныч @  16.3.2011,  11:53 Найти цитируемый пост)
Почему цикл считает вперёд, а не назад, как хотелось бы, начиная с меньшего к большему, а не наоборот:

 чтоб считал наоборот, замените -- на ++, а > на <.. 
или я не так понял вопроса?

Автор: Буратиныч 16.3.2011, 15:31
Цитата(mes @ 16.3.2011,  15:21)
 чтоб считал наоборот, замените -- на ++, а > на <.. 
или я не так понял вопроса?

Смысл такой, чтоб обрабатывал числа от 9 до 1.
Цикл начинается с hx1 = 9-1, т.е. 8, и пока hx1 больше единицы на каждой итерации отнимать по 1.

Автор: mes 16.3.2011, 15:33
Цитата(Буратиныч @  16.3.2011,  14:31 Найти цитируемый пост)
Смысл такой, чтоб обрабатывал числа от 9 до 1.
Цикл начинается с hx1 = 9-1, т.е. 8, и пока hx1 больше единицы на каждой итерации отнимать по 1.

ну и ? в чем проблема то ? 
http://liveworkspace.org/code/a29f3b9b03009270507fc344079c3b75

Автор: Буратиныч 16.3.2011, 16:09
Прилагаю скриншот.
Не знаю почему, но почему-то в первом условии for получается 10 = 9 - 1

Автор: mes 16.3.2011, 16:32
Цитата(Буратиныч @  16.3.2011,  15:09 Найти цитируемый пост)
Не знаю почему, но почему-то в первом условии for получается 10 = 9 - 1 

значит такой отладчик... не стоит верить каждому его слову  smile 

Автор: Буратиныч 17.3.2011, 13:08
А бывает такое, что вдруг становится невозможным (либо с ошибкой) заполнить какой-то элемент массива, хотя память для него зарезервирована? При этом предыдущие элементы заполнялись успешно.

Автор: bsa 17.3.2011, 13:19
Буратиныч, нет.
Но возможна ситуация, когда ты выходишь за пределы одного массива и повреждаешь другой.

Автор: Буратиныч 18.3.2011, 07:42
Как правильно написать команду, проверяющую ячейку массива на заполненность, типа if(x[i] == Null или Empty) ? Нужно распознать вот это float значение -1.#IND00.

Автор: mes 18.3.2011, 09:26
Код

1. if (x!=x) // NAN != NAN 
2. 
#include <cmath> // c++, для c <math.h>
if (isnan(x)) 

Автор: Буратиныч 18.3.2011, 10:09
Цитата(mes @ 18.3.2011,  09:26)
Код

1. if (x!=x) // NAN != NAN 
2. 
#include <cmath> // c++, для c <math.h>
if (isnan(x)) 

Что-то идентификатор isNaN is undefined.
Там какой-то класс надо подключать? Просто здесь порылся http://social.msdn.microsoft.com/Search/ru-ru?query=isnan и сделал такой вывод  smile 

Автор: mes 18.3.2011, 10:12
Цитата(Буратиныч @  18.3.2011,  09:09 Найти цитируемый пост)
Что-то идентификатор isNaN is undefined.

не isNaN, а isnan

Цитата(Буратиныч @  18.3.2011,  09:09 Найти цитируемый пост)
надо подключать? 

ну так :
Цитата
#include <cmath> // c++, для c <math.h>


Добавлено через 55 секунд
если хотите без подключения используйте 1й вариант.. 

Автор: Буратиныч 18.3.2011, 10:20
Так я и так и эдак, и с инклуд. Всё равно не распознаётся команда.

Автор: mes 18.3.2011, 10:51
Код

bool isnan(double x) { return x != x; } 

Автор: volatile 19.3.2011, 00:37
Цитата(Буратиныч @  18.3.2011,  07:42 Найти цитируемый пост)
Как правильно написать команду, проверяющую ячейку массива на заполненность

Проверка isnan здесь ничего не покажет. Если ячейку не инициализировали, там будет что угодно, любой мусор, и не факт что это будет nan.

Автор: Буратиныч 24.4.2011, 15:44
Всё-таки никак не могу сделать переменную с нужным именем. Например, такая задача:

char[5] name = "num";
int i = 5;

int ( переменная name+i ) = 10;
int final = num5 + 2; // равно 12

Каким способом её решить?

Автор: borisbn 24.4.2011, 18:10
Цитата(Буратиныч @  24.4.2011,  15:44 Найти цитируемый пост)
Всё-таки никак не могу сделать переменную с нужным именем. Например, такая задача:

http://ru.lmgtfy.com/?q=%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D0%B8%D0%BC%D1%8F+%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9+c%2B%2B

Автор: bsa 25.4.2011, 09:51
Буратиныч
Код
typedef std::map<std::string,int> VarMap;
VarMap varMap;
varMap["num5"] = 10;
int final = varMap["num5"] + 2;

Автор: cupper 25.4.2011, 11:37
вы что мозг парите человеку. Вам же русским языком было сказано "динамическое имя переменно" а вы ему массивы, векторы, мапы.

Буратиныч
то что ты спрашиваешь сделать низя, низя именно в той формулировки в которой ты хочешь. Такое можно делать только в интерпретируемых языках, С++/C не такие. (такое возможно сделать с использование define'ов скорее всего, но так не делают в С++).

Сохранить разный набор данных можно как единую сущность, последовательность этих самых данных, это может быть массив (самый простой случай) это могут быть контейнеры типа vector, map. Вам все это уже показали. Вам нужно оторваться от вашего динамическое имя" и прийти к пониманию "динамический список данных".

Хотя даже в интерпретируемых языках такое навряд ли можно, точно не во всех. В баше я такое не знаю как сделать. Такое можно сделать в cmake скриптах smile
Код

SET(LIST_DIR test)
file(GLOB ${LIB_DIR}_LIB_FILES ${CMAKE_SOURCE_LIB_DIR}/${LIB_DIR}/win/${REGEX_LIB_FILE})

в итоге вы получим переменную test_LIB_FILES вот как раз так и думаю ТС, но так низя в С++ smile а даже если б было можно, то явно так делать не стоит.

Автор: Буратиныч 25.4.2011, 11:53
Я сейчас так пробую делать

char newname[10];
char name[10] = "num";
int i = 5;

sprintf_s( newname, "%s%d", name, i );

но как переменной, с названием newname (заранее не знаешь, что это num5 ), присвоить значение int?

Автор: cupper 25.4.2011, 12:13
прочитай еще раз что я тебе написал. Скажи ты раньше на каком языке писал ? Откуда у тебя такой мышление ?)

char newname[10]; это переменная типа массив char, имя этой переменной (массива) newname
sprintf_s( newname, "%s%d", name, i ); здесь ты массив newname записываешь строку "name5". СТРОКУ !!!!!!!

у тебя нет переменно name5 у тебя есть массив со строкой "name5".  А раз у тебя нет переменной то ты ей не можешь присвоить никакой значение.

PS. ты лучше скажи для чего тебе это, и тебе скажут как это сделать правильно. если книжки лень читать.

Автор: Буратиныч 25.4.2011, 12:29
Мышление да, действительно, от другого языка досталось, скриптового. Но так в его базе лежит С++, то и, надо полагать, его функции переводятся обратно в С++. Вот две из них:

VARSET
- sets the value of dynamic variable Miscellaneous functions

SYNTAX  VarSet( ''varname'', value )  
RETURNS NUMBER  
FUNCTION  Sets the value of dynamic variable. Returns 1 on success, 0 on failure. 
Dynamic variables are variables that are named dynamically, typically by creating a variable name from a static part and a variable part. The following example dynamically constructs the variable name from a variable prefix and a static suffix. 

VARGET
- gets the value of dynamic variable Miscellaneous functions

SYNTAX  VarGet( ''varname'' )  
RETURNS ARRAY or NUMBER  
FUNCTION  Gets the value of dynamic variable.
Returns the NUMBER or ARRAY depending on type of underlying variable. 
Dynamic variables are variables that are named dynamically, typically by creating a variable name from a static part and a variable part. For example, the following example dynamically constructs the variable name from a variable prefix and a static suffix. 
 

В случае с моим примером можно сделать так:
VarSet( "num" + i, 10);
в итоге получается, что num5 = 10

 

Автор: cupper 25.4.2011, 12:39
в скриптовых языках (возможно не всех) тип переменной определяется во время присваивания ей значения. Это называется динамическая типизация. Поэтому проделать такой как ты написал так возможно. Так как за определении типа ответственен интерпритатор (компутер). В компилируемых языках, статическая типизация, т.е. тип переменной задается при определении самой переменной. И делается это уже программистом, и компилятор этого сделать не может. Поэтому в приведенных тобой функция нужно передавать еще а тип переменной, но так как тип это не переменная, то его низя передать, следовательно низя компилятор не может узнать тип переменной которую ты хочешь создать, следовательно он не может создать такую переменную.

Автор: mes 25.4.2011, 12:54
Цитата(cupper @  25.4.2011,  11:39 Найти цитируемый пост)
 В компилируемых языках, статическая типизация, т.е. тип переменной задается при определении самой переменной. 

не  всегда  smile 

Автор: Буратиныч 25.4.2011, 12:56
Ну с типами проблем нет, они заранее известны, так что передам если компилятор попросит. Проблема в поиске подобной функции, принцип работы же её понятен. Какой её аналог в С++?

Автор: xvr 25.4.2011, 12:59
Цитата(Буратиныч @  25.4.2011,  12:29 Найти цитируемый пост)
Мышление да, действительно, от другого языка досталось, скриптового.

Это заметно  smile 
Цитата(Буратиныч @  25.4.2011,  12:29 Найти цитируемый пост)
Но так в его базе лежит С++, то и, надо полагать, его функции переводятся обратно в С++.
А вот это заблуждение.

То, что вы хотите сделать, можно сделать через интерфейсы отладчика. См. http://msdn.microsoft.com/en-us/library/ms680580%28v=VS.85%29.aspx

Автор: mes 25.4.2011, 13:02
Буратиныч, имя переменной в C++ статическое.. чтоб сделать его динамическим нужно использовать какой то трюк..
какой именно зависит от требований предъявляемых Вашей переменной..
Так если переменные 
  одного типа, а имя можно свести к индексу, то подойдет простой массив/вектор.. 
  одного типа, но имя задано строкой, то подойдет карта (std::map)

несколько типов можно свести к одному посредством варианта.. 

остальные варианты гораздо сложней, и в некоторых из них легче использовать/прикрутить  скриптовый движок..
поэтому как уже не раз вам советовали, озвучьте задание, ибо результаты гадания на кофейной гуще Вам не помогут.. 
smile


 

Автор: Буратиныч 25.4.2011, 13:21
Цитата(mes @ 25.4.2011,  13:02)
озвучьте задание

Если опираться на моё мышление, то оно бы выглядело так:

i = 5;
VarSet( "num" + i, 10); // num5 = 10
temp = VarGet ( "num" + i );
final = temp + 2; // равно 12

Автор: boostcoder 25.4.2011, 13:29
кто-нибудь понял для чего это нужно? smile
за все время кодирования на с++, такой необходимости не возникало.
уверен, что у xvr и mes, как минимум, тоже ;)

Автор: xvr 25.4.2011, 13:29
Цитата(Буратиныч @  25.4.2011,  13:21 Найти цитируемый пост)
Если опираться на моё мышление, то оно бы выглядело так:

Подход от mes в 3м посте полностью удовлетворяет вашему заданию.

Код

map<string,int> assoc_array;

void VarSet(string var_name, int value) {assoc_array[var_name]=value;}
int VarGet(string var_name) {return assoc_array[var_name];}


Гы, а я быстрее!  smile 

Автор: mes 25.4.2011, 13:30
Цитата(Буратиныч @  25.4.2011,  12:21 Найти цитируемый пост)
Если опираться на моё мышление, то оно бы выглядело так:
Код

i = 5;
VarSet( "num" + i, 10); // num5 = 10
temp = VarGet ( "num" + i );
final = temp + 2; // равно 12
 


Код

std::map<std::string, int> Vars;

int main ()
{
   std::string var_name = concate ("num", 5);
   
   Vars[var_name] = 10;
   Vars[var_name] += 2;
   
   std::cout << var_name << " = " << Vars[var_name];
}


http://liveworkspace.org/code/789f455e67f943f228396c307d6dfe41

Автор: xvr 25.4.2011, 13:32
Цитата(boostcoder @  25.4.2011,  13:29 Найти цитируемый пост)
уверен, что у xvr и mes, как минимум, тоже ;)

Угу. Желание прикрутить к С++ интроспекцию возникало, а вот делать аналог eval из многих скриптовых языков, как то не возникало  smile 

Автор: mes 25.4.2011, 13:34
Цитата(boostcoder @  25.4.2011,  12:29 Найти цитируемый пост)
за все время кодирования на с++, такой необходимости не возникало.
уверен, что у xvr и mes, как минимум, тоже

возникало  smile   хотя все равно мне кажется, что тс нужно не это smile

Добавлено через 40 секунд
Цитата(xvr @  25.4.2011,  12:32 Найти цитируемый пост)
 а вот делать аналог eval из многих скриптовых языков, как то не возникало 

 smile 

Автор: Буратиныч 25.4.2011, 13:52
Цитата(boostcoder @ 25.4.2011,  13:29)
кто-нибудь понял для чего это нужно? smile

Есть работающий скрипт для одной платформы. Но т.к. он работает там медленно, есть необходимость перевести его в dll. Скорость обработки данных при этом увеличивается в разы. Вот это и есть цель.

Автор: xvr 25.4.2011, 13:55
Цитата(Буратиныч @  25.4.2011,  13:52 Найти цитируемый пост)
Есть работающий скрипт для одной платформы. Но т.к. он работает там медленно, есть необходимость перевести его в dll.

Вам нужно или переписать скрипт на С/С++ (без всяких обращений по вычисляемым именам), или сделать JIT для интерпретатора скрипта
Других путей не вижу  smile 

Автор: boostcoder 25.4.2011, 14:06
еще вариант, подцепить скриптовый движок. благо таковых мильен.

Добавлено @ 14:09
но все равно не понимаю зачем писать адаптацию под имеющийся скрипт. в любом случае, и логичней и правильней будет переписать задачу которую он выполняет на с++.

Добавлено через 3 минуты и 13 секунд
чего-то вы недоговариваете ;)

Добавлено через 3 минуты и 29 секунд
скрипт секретный? показывай ;)

Добавлено через 4 минуты и 39 секунд
Цитата(mes @  25.4.2011,  13:34 Найти цитируемый пост)
возникало  

жесть..
у Вас есть реальный пример, где только такой способ приемлем?

Автор: Буратиныч 25.4.2011, 14:57
Этим и занимаюсь, переписываю на С++, но как могу. Ведь мышление для этого тоже надо менять. Например, теорию Классов и ООП в целом я понимаю, но мышление ещё ориентируется на структурный код. Надо времени и практики, но вместе с тем хоть какой-то результат нужен уже сейчас.

Автор: boostcoder 25.4.2011, 15:02
Цитата(boostcoder @  25.4.2011,  14:06 Найти цитируемый пост)
скрипт секретный? показывай ;)


Автор: cupper 25.4.2011, 16:12
Цитата(xvr @ 25.4.2011,  13:29)
Цитата(Буратиныч @  25.4.2011,  13:21 Найти цитируемый пост)
Если опираться на моё мышление, то оно бы выглядело так:

Подход от mes в 3м посте полностью удовлетворяет вашему заданию.

Код

map<string,int> assoc_array;

void VarSet(string var_name, int value) {assoc_array[var_name]=value;}
int VarGet(string var_name) {return assoc_array[var_name];}


Гы, а я быстрее!  smile

это как если бы я попросил машину с крыльями, а мне дали машину с картонными крыльями. Для полной картины тогда нужно добавить сюда Boost.Any, но я им не пользовался и пробовать что то написать не буду.

Автор: boostcoder 25.4.2011, 16:28
Цитата(cupper @  25.4.2011,  16:12 Найти цитируемый пост)
Boost.Any, но я им не пользовался

кстати, так же никогда не использовал. и не очень представляю для чего оно нужно в с++, ибо полностью теряется информация о типе. единственное что могу представить, это именно для текущей задачи...
к примеру, boost.variant еще как-то наверное можно применять, т.к. есть возможность хотя бы узнать перечень допустимых типов и в случае ошибки, получить компайл-тайм ошибку. так же, можно писать собственные визиторы для каждого пользовательского варианта.

Добавлено через 6 минут и 13 секунд
аффтар, скрипт давай!

Автор: mes 25.4.2011, 17:13
Цитата(boostcoder @  25.4.2011,  13:06 Найти цитируемый пост)
у Вас есть реальный пример, где только такой способ приемлем?

ну прежде всего я практически не встречал случая, когда только один способ приемлем.. 
ну а так у карты значений очень много применений  smile

Добавлено через 5 минут и 18 секунд
Цитата(boostcoder @  25.4.2011,  15:28 Найти цитируемый пост)
и не очень представляю для чего оно нужно в с++, ибо полностью теряется информация о типе. 

для полиморфного хранения.. хранение как void* не позволяет безопасно копировать и удалять.. 
а информация о типе вполне может быть ассоциирована другим способом, и тип может восстановлен когда понадобится.. 


Автор: sergioK1 1.5.2011, 13:06
Цитата(boostcoder @ 25.4.2011,  12:29)
кто-нибудь понял для чего это нужно? smile
за все время кодирования на с++, такой необходимости не возникало.
уверен, что у xvr и mes, как минимум, тоже ;)

как это зачем  smile ? чтобы не делать factory, smile  там switch некрасивый и громозкий  smile  , а так изящнее ,(ну и про поддержку думать не надо smile  )
можно в статью в журнал написать , можно студентов на экзамене подколоть,   smile 

Буратиныч,

читай про интерфесы (abstact classes) и забудь про динамику ,   иначе получишь  английские слова русскими буквами  smile 

Автор: boostcoder 1.5.2011, 13:19
Цитата(sergioK1 @  1.5.2011,  13:06 Найти цитируемый пост)
чтобы не делать factory

Цитата(sergioK1 @  1.5.2011,  13:06 Найти цитируемый пост)
там switch некрасивый и громозкий

пример пожалуйста.

Автор: sergioK1 1.5.2011, 13:33
Цитата(boostcoder @ 1.5.2011,  12:19)
Цитата(sergioK1 @  1.5.2011,  13:06 Найти цитируемый пост)
чтобы не делать factory

Цитата(sergioK1 @  1.5.2011,  13:06 Найти цитируемый пост)
там switch некрасивый и громозкий

пример пожалуйста.

чего пример фактори ?  вы шутите ?
счас найду свой код на VB c конца 90-x , smile  когда наследования не было 
 и приходилось подобный трюки придумывать там заодно  и variant сплош и рядом был, тот что в бусте 
непонятно зачем,

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

Автор: boostcoder 1.5.2011, 13:56
Цитата(sergioK1 @  1.5.2011,  13:33 Найти цитируемый пост)
зачем собсвенно этот буст нужен ?

школота детектед smile

Автор: sergioK1 2.5.2011, 13:45
Цитата(boostcoder @ 1.5.2011,  12:56)
Цитата(sergioK1 @  1.5.2011,  13:33 Найти цитируемый пост)
зачем собсвенно этот буст нужен ?

школота детектед smile

В чем юмор ?. Буст это для кросплатформенных задач ?. Так Я понял из описания,
так для этого  придумали жаву . Меня уже 3 product manager это спросили 
что на нем делаеться лучше?, то-ка не надо типа жава это для монки кодеров smile  , а мы тут настоящии профи  smile 


Автор: mes 2.5.2011, 14:40
Цитата(sergioK1 @  2.5.2011,  12:45 Найти цитируемый пост)
Буст это для кросплатформенных задач ?. Так Я понял из описания,
так для этого  придумали жаву . 

без комментариев  smile 

Автор: boostcoder 2.5.2011, 14:42
Цитата(mes @  2.5.2011,  14:40 Найти цитируемый пост)
без комментариев  smile  

присоединяюсь.

не охота срачь разводить. есть задачи посерьезней ;)

Автор: bsa 3.5.2011, 10:40
Цитата(sergioK1 @  2.5.2011,  13:45 Найти цитируемый пост)
Буст это для кросплатформенных задач ?. Так Я понял из описания,
так для этого  придумали жаву . Меня уже 3 product manager это спросили 
что на нем делаеться лучше?

Детский сад на выезде: "3 product manager" и "настоящии профи". smile smile 
Вместо того, чтобы сидеть за компьютером и отвлекать серьезных людей, пошел бы ты в школу и поучил бы русский язык... Ну на худой  конец, почитал бы "Войну и мир", "Преступление и наказание" и еще что-нибудь из классиков (хотя, есть подозрение, что тебе еще по программе это рано). Глядишь, ошибок бы делал меньше. smile 

Автор: sergioK1 12.5.2011, 03:06
[QUOTE=bsa,3.5.2011,  09:40]
Цитата(sergioK1 @  2.5.2011,  13:45 Найти цитируемый пост)
 пошел бы ты в школу и поучил бы русский язык... Ну на худой  конец, почитал бы "Войну и мир", "Преступление и наказание" и еще что-нибудь из классиков (хотя, есть подозрение, что тебе еще по программе это рано). Глядишь, ошибок бы делал меньше. smile

А ты сколько языков знаешь, на многих  грамотно пишешь и всегда ?






Автор: asmdzen 12.5.2011, 08:39
ктонибудь может показать как прикрутить boost.variant к map'у именно для этой задачи? т.е. все нужные переменные разных типов хранятся в мапе, обращатся можно както так: 
Код

vars[varname] = 1;
vars[varname+'1'] = 0.5;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)