Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для Via_Tor
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 10

Шаблон класса двусвязного списка, метод, возвращающий указатель

24.01.2016, 23:13. Показов 2917. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу шаблон класса двусвязного списка. Всё в хедере. В классе присутствует структура item. Пытаюсь написать метод, возвращающий указатель на тип item, однако компилятор выдает ошибку "C2061 синтаксическая ошибка: идентификатор "item" " Строка 58
Что тут неправильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
template <typename T>
class DoubleList
{
public:
    struct item 
    {
        T value;
        item *pPrew;
        item *pNext;
        item(T value);
    };
private:
    int size;
    item *pHead;
    item *pTail;
public:
    DoubleList();
    ~DoubleList();
    int get_size();
    item* begin();
    item* end();
    item* step(item*);
    void add(T);
    void addHead(T);
    void clear();
    int find_all(T);
    item* find_fist(T);
    int find_last(T);
    void insert(int, T);
    void remove_at(int);
    void remove_fist(T);
    void reverse();
    void show();
};
 
template <typename T>
DoubleList<T>::DoubleList(){
    size = 0;
    pHead = pTail = NULL;
}
 
template <typename T>
DoubleList<T>::~DoubleList(){
    item *pTemp = pHead;
    while (pHead) {
        pTemp = pTemp->pNext;
        delete pHead;
        pHead = pTemp;
    }
}
 
template <typename T>
int DoubleList<T>::get_size(){
    return size;
}
 
template <typename T>
DoubleList<T>::item* DoubleList<T>::begin() {
    return pHead;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2016, 23:13
Ответы с готовыми решениями:

Даны числа D1 и D2 и указатель P0 на один из элементов непустого двусвязного списка. Добавить в начало списка новый
Даны числа D1 и D2 и указатель P0 на один из элементов непустого двусвязного списка. Добавить в начало списка новый элемент со значением D1...

Шаблон двусвязного списка
Написала такую программу реализации двусвязного списка.Когда перерабатывала под шаблон,выдает ошибку.Подскажите,в чем проблема? ...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

21
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
25.01.2016, 09:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Via_Tor Посмотреть сообщение
C++
1
2
3
4
5
template <typename T> 
typename DoubleList<T>::item::item(T value){ 
    this->value = value; 
    pPrew = pNext = NULL; 
}
Вот здесь typename не нужен.

Добавлено через 1 минуту
Т.е. надо так:
C++
1
2
3
4
5
template <typename T> 
DoubleList<T>::item::item(T value){ 
    this->value = value; 
    pPrew = pNext = NULL; 
}
1
 Аватар для Via_Tor
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 10
25.01.2016, 10:56  [ТС]
Всё решил таким макаром:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
// doubleList.h
#pragma once
 
template <typename T>
class DoubleList
{ ... }
__

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// dictionary.h
#pragma once
#include "DoubleList.h"
 
struct WordItem
{
    std::string word;
    int count;
    WordItem();
    WordItem(std::string);
    WordItem& operator = (const WordItem &obj);
    bool operator == (WordItem& obj);
};
 
class Dictionary
{ ... }
___

C++
1
2
3
4
5
6
7
8
9
10
11
12
// dictionary.spp
#include <iostream>
#include <string>
#include "Dictionary.h"
using namespace std;
 
 
WordItem::WordItem(){
    this->word = "";
    count = 0;
}
       ( ... )
C++
1
2
3
4
5
6
7
// main.cpp
#include <iostream>
#include <string>
#include "Dictionary.h"
using namespace std;
 
void main() { ... }


Благодарю за помощь.

Добавлено через 2 минуты
DrOffset, да, спасибо, я уже исправил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2016, 10:56

Элемент двусвязного списка содержит указатель на строку. Вставить строку в конец списка
Элемент двусвязного списка содержит указатель на строку. Вставить строку в конец списка. В список помещается копия входной строки в...

Метод класса возвращающий итератор
Не могу заставить метод класса возвращать итератор, помогите понять почему компилятор не разрешает это сделать: Класс (методы...

Как передать в метод класса Menu указатель на метод дочернего класса?
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Арифметика Класса Двусвязного списка
Всем привет. тут такая проблема есть у меня программа создание двусвязного циклического списка и действия над ним. и надо создать...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru