Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / обращение к оператору [] для указателя на объект / 4 сообщений из 4, страница 1 из 1
01.05.2005, 16:55
    #33044504
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к оператору [] для указателя на объект
столкнулся с тем, что если у меня есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class test
{
 int operator[](int i)
 {
   return i;
 };
};
то у меня не прокатывает следующее:
Код: plaintext
1.
2.
test *t=new test();
int k=t[ 10 ];
можно поизвращаться:
Код: plaintext
1.
2.
3.
4.
test *t=new test();
int k=t->operator[]( 10 );
//или так
int j=(*t)[ 10 ];
как-то это некрасиво...
или придется смириться?
...
Рейтинг: 0 / 0
01.05.2005, 19:30
    #33044542
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к оператору [] для указателя на объект
Первое что пришло в голову:

Код: plaintext
1.
2.
        test &sts = *(new test);
	int a = sts[ 4 ];

P.S. И не забудьте пихнуть operator [] в секцию public )))
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
01.05.2005, 20:08
    #33044555
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к оператору [] для указателя на объект
спасибо, кое что интересное...
а публик я для краткости упустил :-)
надобыло struct написать для ясности :-)
...
Рейтинг: 0 / 0
02.05.2005, 23:20
    #33045190
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обращение к оператору [] для указателя на объект
столкнулся с тем, что если у меня есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class test
{
 int operator[](int i)
 {
   return i;
 };
};

то у меня не прокатывает следующее:

Код: plaintext
1.
2.
test *t=new test();
int k=t[ 10 ];

И НЕ ДОЛЖНО ! С какой стати ты решил, что прегрузка [] поменяет тебе семантику языка ? Не поменяет. Указатель есть указатель,его надо разименовать. Кстати, компилироваться -то будет, t[10] - это t+10.

можно поизвращаться:
Код: plaintext
1.
2.
3.
4.
test *t=new test();
int k=t->operator[]( 10 );
//или так
int j=(*t)[ 10 ];

Нужно, а не можно. И почему, непонятно, извращаться ?

как-то это некрасиво...
или придется смириться?

А чего ты хотел-то ? указатель есть указатель. Объяви ссылку вместо указателя, инициализируй ее *( new test(..) ) и будет тебе щастье.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / обращение к оператору [] для указателя на объект / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]