|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2012, 01:23 | #1 |
Новичок
Джуниор
Регистрация: 09.12.2012
Сообщений: 3
|
Вложенный класс в шаблон. Указатель на вложенный класс в возвращаемом значении метода шаблона. Что делать?
код будет ниже
Последний раз редактировалось Asya1994; 09.12.2012 в 01:34. Причина: Неправильная формулировка |
09.12.2012, 01:31 | #2 |
Новичок
Джуниор
Регистрация: 09.12.2012
Сообщений: 3
|
Внутренний класс шаблона.
template <class D> class List
{ protected: //создавать отдельно узел от списка пусть нельзя. class Node { public: Node *next; D value; Node(D value=0); void PrintValue(); }; Node* begin; Node* end; public: List(); Node* Go(D value,int c); void Add(D value); void Remove(D value); Node* FindNode (D value); void SetValue(D value, D newvalue); int SizeList(); void Print(); }; #include <iostream> using namespace std; #include "Template.h" template <class D> List<D>::Node::Node(D value) { this->value=value; this->next=NULL; }; template <class D> List<D>::List() { this->begin=NULL; this->end=NULL; }; template <class D> void List<D>::Add(D value) { Node* node= new Node(value); if(begin==NULL) { begin=node; end=node; node->next=0; } else { end->next=node; end=node; } }; template <class D> Node* List<D>::FindNode(D value) //ЗДЕСЬ ЕМУ СОВЕРШЕННО НЕ НРАВИТСЯ ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ. что делать? { Node *buf=begin; while((buf->value!=value)&&(buf!=NULL)) buf=buf.next; if(buf!=NULL) return buf; else { cout<<"Invalid value"<<endl; return 0; } }; template <class D> void List<D>::Remove(D value) { if(Node* node=FindNode(value)) { if(begin==NULL) cout<<"There are no members to remove"<<endl; else if ((node==begin)&&(node==end)) { begin=NULL; end=NULL; delete node; cout<<"Your List has no members"<<endl; } else { Node* buf=begin; Node* buf2; while(buf!=node) { buf2=buf; buf=buf->next; } buf2->next=buf->next; buf->next=NULL; delete buf; } } } template <class D> void List <D>::SetValue(D value, D newvalue) { if(Node* buf=FindNode(value)) buf->value=newvalue; }; /*template <class D> Node* List<D>::Go(D value, int c) { if(Node* buf=FindNode(value)) { int i=0; while((buf.next!=0)&&(i!=c)) { buf=buf.next; i++; } if(i!=c) cout<<"There is less members in a List"<<endl; else return buf; } }; */ template <class D> int List<D>::SizeList() { int i=0; Node* buf=begin; while(buf!=end) { buf=buf->next; i++; } }; template <class D> void List<D>::Print() { Node* buf=begin; while(buf!=end->next) { cout<<(*buf).value<<"\32"; buf=buf->next; } }; void main() { int count; List <int> LinkedList; cout<<"Skolko uzlov vi hotite"<<endl; cin>>count; for (int i=0;i<count;i++) { int value; cout<<"Vvedite value:"<<endl; cin>>value; LinkedList.Add(value); } LinkedList.Print(); LinkedList.SetValue(count, 10); LinkedList.Print(); getchar(); getchar(); } При компиляции выдает вот что: Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" перед "*" Ошибка 2 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Ошибка 3 error C2065: D: необъявленный идентификатор Ошибка 4 error C2065: D: необъявленный идентификатор Ошибка 5 error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "value" |
09.12.2012, 01:41 | #3 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Собственно, а почему он ему должен нравится? Ведь Node фактически шаблонный класс со всеми вытекающими...
|
09.12.2012, 01:43 | #4 |
Новичок
Джуниор
Регистрация: 09.12.2012
Сообщений: 3
|
Ну Node не шаблонный,а вложенный, как бы класс внутри шаблона...
Хочу добиться от компилятора: где ошибка, уже качаю новую студию по блондинистости, может там прокатит?) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. | Человек_Борща | Общие вопросы Delphi | 8 | 27.02.2012 23:24 |
не создается указатель на класс | CodeNOT | Общие вопросы C/C++ | 4 | 04.01.2011 12:10 |
Указатель на абстрактный класс | zhenya.ya | Общие вопросы C/C++ | 0 | 11.11.2010 23:51 |
Указатель на класс | Колючка* | Общие вопросы Delphi | 8 | 21.01.2010 07:38 |
Вопрос о возвращаемом из пользовательской функции значении | motorway | Microsoft Office Excel | 4 | 14.07.2009 16:22 |