Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184

Компилятор выдает ошибку при использовании фабричного метода

22.02.2015, 22:01. Показов 782. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!!
новая ошибка...
смотрите, теперь у меня есть класс
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
template <typename T>
 
struct Node{
    T key;
    Node * next;
    Node * prev;
    Node(T k) :
        key(k), prev(nullptr), next(nullptr){
 
    }
    Node() :
        prev(nullptr), next(nullptr) {
    }
    void print() const {
         ///стандратно
    }
};
 
template<typename T>
class CDoubleLinkedList
{
public:
    CDoubleLinkedList()
    {
    }
    template<class  Item> friend class ListIterator;
    ~CDoubleLinkedList()
    {
        clearList();
    }
 
    Node<T> * search(T k) {
 ///стандратно
    }
    template <typename oT>
    void insert(oT k) {
         ///стандратно
    }
    void deleteNode(Node<T> * n) {
         ///стандратно
    }
    bool isEmpty()const {
        return (m_head == nullptr);
    }
    Iterator<T> * createIterator()const /// а вот тут ошибка
    {
        return new ListIterator<T>(this);
    }
private:
    void clearList() {
         ///стандратно
    }
    template <typename oT>
    Node<T> * createNode(oT number) {
         ///стандратно
    }
    Node<T> * m_head;
};
далее есть интерфейс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <typename Item>
class Iterator
{
public:
 
    virtual ~Iterator()
    {
    }
    virtual void First() = 0;
    virtual void Next() = 0;
    virtual bool isDone()const = 0;
    virtual const Node<Item> * CurrentItem()const = 0;
protected:
    Iterator()
    {
    }
 
};
далее есть реализация этого интерфейса
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
template<class  Item> class CDoubleLinkedList;
template<typename Item>
class ListIterator :
    public Iterator<Item>
{
public:
 
    ListIterator(const CDoubleLinkedList<Item> * doubleList)
        :m_doubleList(doubleList), m_current(doubleList->m_head)
    {
    }
    virtual  ~ListIterator()
    {
    }
    virtual void First(){
        m_current = m_doubleList->m_head;
    };
    virtual void Next(){
        if (m_current !=nullptr)
            m_current = m_current->next;
    };
    virtual bool isDone()const{
        return m_current == nullptr;
    };
    virtual const Node<Item>* CurrentItem()const{
        return m_current;
    };
private:
    const CDoubleLinkedList<Item> * m_doubleList;
    Node<Item> * m_current;
};
а вот ошибка в CDoubleLinkedList
причем если
C++
1
2
3
4
Iterator<T> * createIterator()const
    {
        return new ListIterator<T>(this);
    }
поменять на
C++
1
2
3
4
ListIterator<T> * createIterator()const
    {
        return new ListIterator<T>(this);
    }
то всё хорошо работает.... не могли бы вы подсказать что не так ?

ошибки выдает следующие :
1)error C4430: missing type specifier - int assumed. Note: C++ does
2)error C2334: unexpected token(s) preceding '{'; skipping apparent function body
3) error C2143: syntax error : missing ';' before '<'
всем спасибо за внимание и помощь!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2015, 22:01
Ответы с готовыми решениями:

Компилятор выдает ошибку при создании списка
Доброго времени суток всем, не могу понять где ошибка создаю список list самым простым способом #include &lt;list&gt; ...

Компилятор выдает ошибку при объявлении типа
Начал изучение Haskell совсем недавно, но уже столкнулся с проблемой. Ввожу: Func :: Int-&gt;Int-&gt;Int-&gt;Int Func a...

Как сделать, чтоб при реализации фабричного метода, базовый класс видел наследников?
и при этом нельзя инклудить файлы наследников в базовый класс.

2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
23.02.2015, 09:19
Кликните здесь для просмотра всего текста
#include <stdio.h>
template <typename T>

struct Node{
T key;
Node * next;
Node * prev;
Node(T k) :
key(k), prev(NULL), next(NULL){

}
Node() :
prev(NULL), next(NULL) {
}
void print() const {
///стандратно
}
};

/////////////////////////////////////////////

template <typename Item>
class Iterator
{
public:

virtual ~Iterator()
{
}
virtual void First() = 0;
virtual void Next() = 0;
virtual bool isDone()const = 0;
virtual const Node<Item> * CurrentItem()const = 0;
protected:
Iterator()
{
}

};

/////////////////////////////////////////////
template<class Item> class CDoubleLinkedList;
template<typename Item>
class ListIterator :
public Iterator<Item>
{
public:

ListIterator(const CDoubleLinkedList<Item> * doubleList)
:m_doubleList(doubleList), m_current(doubleList->m_head)
{
}
virtual ~ListIterator()
{
}
virtual void First(){
m_current = m_doubleList->m_head;
};
virtual void Next(){
if (m_current !=NULL)
m_current = m_current->next;
};
virtual bool isDone()const{
return m_current == NULL;
};
virtual const Node<Item>* CurrentItem()const{
return m_current;
};
private:
const CDoubleLinkedList<Item> * m_doubleList;
Node<Item> * m_current;
};
/////////////////////////////////////////////


template<typename T>
class CDoubleLinkedList
{
public:
CDoubleLinkedList()
{
}
template<class Item> friend class ListIterator;
~CDoubleLinkedList()
{
clearList();
}

Node<T> * search(T k) {
///стандратно
}
template <typename oT>
void insert(oT k) {
///стандратно
}
void deleteNode(Node<T> * n) {
///стандратно
}
bool isEmpty()const {
return (m_head == NULL);
}
Iterator<T> * createIterator()const /// а вот тут ошибка
{
return new ListIterator<T>(this);
}
private:
void clearList() {
///стандратно
}
template <typename oT>
Node<T> * createNode(oT number) {
///стандратно
}
Node<T> * m_head;
};


/////////////////////////////////////////////////




/////////////////////////////////////////////////




int main () {
return 0;
}

изменил порядок кода, всё скомпилилось. Правда, мой компилятор незнаком с nullptr, поэтому я везде nullptr позаменял на NULL
1
0 / 0 / 1
Регистрация: 15.04.2013
Сообщений: 184
23.02.2015, 09:43  [ТС]
Спасибо огромное !!!! Все получилось!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2015, 09:43
Помогаю со студенческими работами здесь

Массив: при компилировании исходника компилятор выдает ошибку
# include &lt;iostream&gt; # include &lt;math.h&gt; # include &lt;stdio.h&gt; using namespace std; int main () { const int ishod = 15; const...

При повторном использовании recursive_directory_iterator программа выдает ошибку
при повторном использовании recursive_directory_iterator программа дает вот такое: Как я понимаю recursive_directory_iterator в...

Почему реализованная структура при использовании выдает ошибку?
Доброго времени суток, уважаемые форумчане! Написал программу моделирующую работу светофора, но при использовании структуры data, не...

При проверке сайтом олимпиады программы, компилятор выдает ошибку
Сама задача. Вы пишете программу, задача которой заключается в анализе данных с биржи и принятии решений о покупке или продаже того или...

Компилятор выдает ошибку при сворачивании SQL запроса в функцию
Вечер добрый! При написании программы возникла необходимость создать функции. Однако компилятор ругается на название запроса. И...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru