Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LeX
297 / 297 / 80
Регистрация: 30.06.2010
Сообщений: 1,109
#1

вопрос на засыпку, возможно ли? - C++

23.03.2011, 17:10. Просмотров 367. Ответов 4
Метки нет (Все метки)

возможно ли каким либо образом перегрузить оператор [] в собственном классе что бы были возможны следующие конструкции:

C++
1
2
3
4
5
MyClass v;//или MyClass v[<размер>];
v[10]=3;
v[4]=35.6;
v[4.5]="sdfas";
v["dfg"]=432;
то есть что бы индекс был любого типа и значение элемента такого массива тоже было любого типа?

я как то поэкспериментировал с указателем void*(в реализации), получилось следующее:
C++
1
2
3
4
5
6
v["cg"]="buba";
v[1]=(void*)2;//тут хотелось бы без явного указания void*
//без него ругается что не может привести int к void*
v[2]="mars";
v["gr"]=(void*)4;
printf("%s\n%d\n%s\n%d", v["cg"], v[1], v[2], v["gr"]);
вывод работает. все нормально. как избавится от void*? перегрузкой оператора =?

оператор [] возвращает указатель на void* поле, куда записывается значение. строки проходят, числа-нет
а числа типа float и double вообще не удается привести к void*(ну и черт с ними)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 17:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос вопрос на засыпку, возможно ли? (C++):

На засыпку для новичков: в функции передаётся один параметр, а его значения разные; почему? - C++
#include &lt;stdio.h&gt; //Тут некоторый код void foo(X* pX) {printf (&quot;%x\n&quot;, pX);}; void bar(Y* pY) {printf (&quot;%x\n&quot;, pY);}; int...

Вопрос на засыпку!!!! - Сетевое оборудование
Есть две локальные сети связанные через интернет. В каждой из них есть компьютер ( микроконтроллер с TCP/IP стеком) с IP 192.168.1.10. ...

Вопрос на засыпку... - PHP
Здравствуйте, //переменная например $querry foreach($querry as $n =&gt; $v) Как правильно понять этот код?

Вопрос на засыпку о массиве! - Pascal ABC
Помогите решить задачу, тк в своем решении я не уверена! Ввести массив D из 12 чисел: -8 0 8 15 -45 100 -87 34 -4 11 -54 ...

Работа с памятью. Вопрос на засыпку. - Visual C++
У меня в одном *.cpp есть объявление структуры и обращение к ее полям: class1.h: struct NodeData { unsigned short**...

Acer Aspire 5520 вопрос на засыпку. - Ноутбуки
Ребята, как вы отзоветесь об этой машине???? :umnik: И второй вопрос, у меня при выключеном Нам Локе, при нажатии клавиши FN...

4
LeX
297 / 297 / 80
Регистрация: 30.06.2010
Сообщений: 1,109
23.03.2011, 17:18  [ТС] #2
Saiberg, ладно, приведите объявление перегрузок в классе(реализую уж сам), что бы можно было реализовать:
C++
1
2
3
v["fsdf"]=1;
v["fd"]=345.567;
v["as"]="rgsdf";
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
23.03.2011, 17:27 #3
LeX BB, возможно, если тип индекса массива и тип элемента массива будет некоторого класса Variant, который, в свою очередь, может хранить значения различных типов. Реализуется все это через объединение (union) переменных различных типов и тега, который будет представлять информацию о том, переменная какого типа в данный момент хранится в объекте типа Variant.
Пример класса variant, который может хранить значения типа double и char: http://www.cyberforum.ru/cpp-beginne...ml#post1368871. Можешь взять его и расширить под свои нужды.
Если не секрет, зачем подобные извращения понадобились?
2
LeX
297 / 297 / 80
Регистрация: 30.06.2010
Сообщений: 1,109
23.03.2011, 17:34  [ТС] #4
Nameless One, спасибо, попробую поработать с union
ну такради интереса, получится, нет
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
23.03.2011, 17:52 #5
C++
1
2
3
4
5
6
7
8
    int operator[](int i)
    {
        return(i);   
    }
    const char* operator[](const char* b)
    {
        return(b);
    }
А перегрузка оператора то не айс ? или мы не ищем легких путей ...

Добавлено через 2 минуты
а .. понял в чем подвох
0
23.03.2011, 17:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2011, 17:52
Привет! Вот еще темы с ответами:

Возможно ли создать систему вопрос-ответ - PHP
без базы

На засыпку - Графика и игры
Здравствуйте! Кто знает как называется программа/окно создания персонажа как в большинстве ММО РПГ и как это творение создается?

На засыпку , по сайтам обменникам средств - Электронные деньги
Вопрос на засыпку , по сайтам обменникам есть сайты что делают денежные операции при этом с сделок, они получают процент какой то ...

как сделать анимационную картинку по времени...если возможно,буду признателен кто ответит на мой вопрос!!! - JavaScript
здраствуйте...щас поясню что мне надо,вот выкладываю HTML тег &lt;SCRIPT language=&quot;JavaScript&quot;&gt; &lt;!-- date = new Date(); if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru