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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> std::list внутри класса 
V
    Опции темы
vamp0x00
Дата 28.10.2010, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
#include <list>
using namespace std;

template <class Type> class Vect
{
public:
    list<Type> lst;
    list<Type>::iterator p;
    Vect() {}
    ~Vect() { cout << "Destroy " << this << endl; }
    int size() const { return lst.size(); }
    void push(Type el) { lst.push_back(el); }
    void print() const {
        for (p = lst.begin(); p != lst.end(); p++) 
            cout << *p;
        cout << endl;
    }
};

int main()
{
    Vect <int> a;
}



как работать с списком внутри класса? 

Это сообщение отредактировал(а) vamp0x00 - 28.10.2010, 16:42
PM MAIL ICQ GTalk   Вверх
kosmonaFFFt
Дата 28.10.2010, 04:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(vamp0x00 @  28.10.2010,  04:51 Найти цитируемый пост)
void print() const {        for (p = lst.begin(); p != lst.end(); p++)             cout << *p;        cout << endl;    }


Ты уже с ним работаешь... )



--------------------
user posted image
PM MAIL ICQ   Вверх
Crafty
Дата 28.10.2010, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <iostream>
#include <list>
using namespace std;
template <class Type> class Vect
{
public:
    list<Type> lst;
    typename list<Type>::iterator p;    // указываем typename явно
    Vect() {}
    ~Vect() { cout << "Destroy " << this << endl; }
    int size() const { return lst.size(); }
    void push(Type el) { lst.push_back(el); }
    void print() {                                 // print не может быть константной так как изменяет p
        for (p = lst.begin(); p != lst.end(); p++) 
            cout << *p;
        cout << endl;
    }
};
int main()
{
    Vect<int> a;
    a.push(1);
    a.push(2);
    a.push(3);
    a.print();
}

PM MAIL   Вверх
bsa
Дата 28.10.2010, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



vamp0x00, да и строчку 8 следует поместить между 13 и 14. Не надо итераторы внутри класса объявлять.
Кстати, объявление lst следует переместить в приватную область класса.
PM   Вверх
Crafty
Дата 28.10.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



vamp0x00, ещё если итератор только для чтения то лучше использовать typename list<Type>::const_iterator p; 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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