Официальный сайт студ.городка НГТУ
Программирование и БД » вложенные классы 

#1  22.05.11 19:22

вложенные классы

хочу вот что:

template <typename T1>
class class_name
{
    int a;
    class class_name2
    {
        int b;
        somemethod()
        {
            b = a;
        }
    }
}

но компилятор ругается на то что он не видит переменную "а" в классе class_name2
вообще можно как-нить так сделать?

а вообще проблема вот в чем, пусть я имею класс контйнер
template <typename T1>
class class_name
{
    vector<int> cont;
    class iterator
    {
    }
}

нужно написать вложенный класс итератор для     vector<int> cont;
как это сделать?

можно конечно во-первых извне работать с     vector<int> cont;
просто кинув указатель на начало cont.
либо можно просто пользоваться встроенными в vector итераторами как обычно это делается в STL

но задание звучит как:
реализовать вложенный класс итератор в class_name

Исправлено Flinn (22.05.11 19:51)

Offline

#2  22.05.11 20:10

Re: вложенные классы

Ну храни во вложенном классе ссылку(указатель что больше нравится) на базу, инициализируй её в конструкторе и преспокойненько итерируйся. Либо же точно также сделай итератор не вложенным классом, но все-равно храни ссылку на базу и опять же итерируйся.

Исправлено Revenger (22.05.11 20:13)

Offline

#3  22.05.11 20:24

Re: вложенные классы

Да! была такая идея. как передать указатель на базу в конструктор именно во вложенном классе? и в каком месте это делать? создать объект вложенного класса во внешнем и работать с ним. или как? я уже голову сломал как это реализовать.

Offline

#4  22.05.11 20:41

Re: вложенные классы

Да создаешь объект вложенного класса во внешнем.
Ну вложенный класс:
SomeClass
{
private:
   Base* _p;
public:
   SomeClass(Base* p=0) throw(): _p(p){};
}

Исправлено Revenger (22.05.11 20:45)

Offline

Программирование и БД » вложенные классы 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.023 сек.
Выполнено 11 запросов.