На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> как подружиться с шаблоном класса. Ошибка "is not a template type"
    Здравствуйте!

    Сижу мудрю. И кажись намудрил. Код вроде бы простой, а компилер ругаеться.

    Цитата

    error: `list_string' is not a template type


    Подскажите, пожалуйста, где я тупанул?!
    Сообщение отредактировано: Eric-S -
      Ты ведь не h-файл компилируешь, а срр? Приводи и его код. Только не лепи свои портянки с закомментированным кодом во весь файл, а выкинь всё лишнее и приведи минимальный код, воспроизводящий ошибку.
      Кстати, пока это делаешь, обычно сам находишь, что не так. :)

      Добавлено
      Как правильно задавать вопросы
        Я нашол проблемное место.
        Но справиться с ним не могу.

        Ошибка возникает, когда я делаю шаблонный класс другом.

        Вот минимальный код, доводящий до ошибки.
        ExpandedWrap disabled
          // дочерний класс
          class child
          {
          private:
           
          // это и приводит к ошибке
          friend class base;
           
          child* prev;
          child* next;
          };
           
          // шаблон базового класса
          template< class T >
          class base
          {
          public:
           
          T* add()
          {
          T* c = new T();
          c->prev = 0;
          c->next = 0;
          return c;
          }
           
          };
           
           
           
          // инстанцируем
          template class base< child >;
          typedef base<child> b;
           
           
          int main()
          {
          return 0;
          }


        Наверое, надо, как-то не так френдить.
        Он ведь просит параметры шаблона.
        Но, я даже не представляю, откуда их взять!
        Предполагаеться, что класс child должен быть унаследован и стать базовым классом. И в шаблон будет передаваться уже именно тот новый класс.

        Добавлено
        О! Поздравьте меня. Я догадался!
        ExpandedWrap disabled
          template< class T >
          friend class base;

        И ведь так элементарно!
        Сообщение отредактировано: Eric-S -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0217 ]   [ 16 queries used ]   [ Generated: 18.11.25, 23:59 GMT ]