Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Указатель на объект и operator []

15K
25 июля 2007 года
like-nix
46 / / 27.06.2007
Привет всем!!!

Нужно сделать динамический массив с типом хранимых данных типа template, который потом можно представить как указатель. Нашел неплохой шаблон у Кубенского он вроде хорошо работает но есть есть не больша проблема, через указатель не могу воспользоваться оператором []

Создаем указатель объект
DynArray<char> *s = new DynArray<char>(128);

Ввод и вывод элементов в данный класс осуществляется с помощью оператора индексации [].
так вот вопрос как этим оператором воспользоваться если объект создавался как указатель
вариант типа s.operator-> =c и s->operator=с не прокатывают. переменые i и с типа int

Если вот бак то все работает
DynArray<char> codeTable(128);
for (int c = 0; c < 128; c++) codeTable[c] = c;
но нужны указатели

нужно выполнить на чистом С++ без STL
309
25 июля 2007 года
el scorpio
1.1K / / 19.09.2006
Цитата:
через указатель не могу воспользоваться оператором []


И не сможешь. Потому что любой указатель всегда использует системные операторы присвоения, сложения/вычитания и индексации.
Использовать переопределённые операторы можно только для объектов и ссылок на них. Или нужно выполнять обращение по адресу
(*Pointer) = Value; Здесь метод класса operator [] (int) применён не к указателю Pointer, а на указываемый объект.

Цитата:
DynArray<char> *s = new DynArray<char>(128);


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

15K
25 июля 2007 года
like-nix
46 / / 27.06.2007
Спасибо за помощь
Вобщем чего то получилось
DynArray<char> *s = new DynArray<char>(128);
for (int c = 0; c < 128; c++) (*s)[c] =c;
for (int i = 97; i < 110; i++)
std::cout << (*s)ж
delete s;
s=NULL;

Но появился новый вопрос как теперь переопределить указатель *s на другой объект те еще раз
DynLIST<char> *s = new DynLIST <char>(128); например
15K
25 июля 2007 года
like-nix
46 / / 27.06.2007
Все разобрался
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог