-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
1 | |
Реализация шаблонного класса01.11.2015, 18:08. Показов 1649. Ответов 12
Метки нет (Все метки)
List_Node.h:
#ifndef _List_Node_H #define _List_Node_H template <class Type> class ListNode { public: Type conteyner; ListNode *Next; }; #endif _LISTNODE_H List.h: #ifndef _List_H #define _List_H #include "List_Node.h" template <class Type> class Spisok { ListNode<Type> *Head; ListNode<Type> *End; ListNode<Type>* GetNewPtr(const Type &); public: Spisok(); ~Spisok(); void WriteFromFront(Type); Type ReadFromPosition(int); bool DeleteFromPosition(int); int IsEmpty() const; void WriteFromEnd(const Type); void print() const; }; template<class Type> Spisok <Type>::Spisok() { Head=nullptr; End=nullptr; } template<class Type> ListNode<Type>* Spisok<Type>:: GetNewPtr(const Type &data) { ListNode<Type> *Ptr=new ListNode<Type>; Ptr->conteyner=data; Ptr->Next=NULL; return Ptr; } template<class Type> void Spisok<Type>::WriteFromFront(Type data) { ListNode<Type> *NewPtr=GetNewPtr(data); if(!IsEmpty()) { Head=End=NewPtr; } else { NewPtr->Next=Head; Head=NewPtr; } } template<class Type> Spisok<Type>::~Spisok() { ListNode<Type> *curptr=Head,*tempPtr=NULL; if(IsEmpty()) { while(curptr!=NULL) { tempPtr=curptr; curptr=curptr->Next; delete tempPtr; } } } template<class Type> void Spisok<Type>:: WriteFromEnd(const Type data) { ListNode<Type> *NewPtr=GetNewPtr(data); if(!IsEmpty()) Head=End=NewPtr; else { End->Next=NewPtr; End=NewPtr; } } template<class Type> bool Spisok<Type>:: DeleteFromPosition(int pos) { int temp=0,temp1=0; ListNode<Type> *NewPtr=Head; ListNode<Type> *TempPtr=Head; ListNode<Type> *TempPtr1=Head; ListNode<Type> *TempPtr2=Head; if(!IsEmpty()) return false; else { while(NewPtr->Next) {temp++;NewPtr=NewPtr->Next;} if(temp<pos || pos<0) {cout<<"Удаление невозможно"<<endl;return false;} while(temp1!=pos) {TempPtr=TempPtr->Next;temp1++;} if(pos==0) {Head=TempPtr->Next;delete TempPtr;TempPtr=Head;return true;} if(TempPtr==End) { while(TempPtr1->Next!=End) TempPtr1=TempPtr1->Next; delete End; End=TempPtr1; End->Next=NULL; return true; } while(TempPtr2->Next!=TempPtr) TempPtr2=TempPtr2->Next; TempPtr2->Next=TempPtr->Next; delete TempPtr; return true; } } template<class Type> Type Spisok<Type>:: ReadFromPosition(int pos) { int temp=0,temp1=0; ListNode<Type> *NewPtr=Head; ListNode<Type> *TempPtr=Head; if(!IsEmpty()) return NULL; while(NewPtr) {temp++;NewPtr=NewPtr->Next;} if(pos>temp || pos<0) return NULL; if(pos==0) return Head->conteyner; pos--; while(pos) { pos--; TempPtr=TempPtr->Next; } return TempPtr->conteyner; } template<class Type> int Spisok<Type>::IsEmpty() const { if(Head==NULL) return 0; else return 1; } template<class Type> void Spisok<Type>:: print() const { ListNode<Type> *TempPtr=Head; while(TempPtr) { cout<<TempPtr->conteyner <<endl; TempPtr=TempPtr->Next; } } #endif _List_H main.cpp: #include<iostream> #include "List.h" #include "List_Node.h" using namespace std; class Car{ int c; public: Car(){c = 0;} }; class Man{ char b; public: Man() {b = 'm';} }; int main() { Spisok<Car> N1; Spisok<Man> N2; N1.print(); N2.print(); return 0; } Проблема: при запуске выводится: ""C:\Users\Artem\Desktop\ООП\Тестировка\Шаблон_класса_List\Debug\Шаблон_класса_L ist.exe"" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В чем проблема?
0
|
01.11.2015, 18:08 | |
Ответы с готовыми решениями:
12
Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? Вызов метода у шаблонного поля, шаблонного класса Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса) Возможно ли создание объекта шаблонного класса в функции этого класса? |
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
01.11.2015, 19:04 | 2 |
Не по теме: 124 сообщения на форуме написал, а тегами пользоваться так и не научился. 2. Попробуй убрать русские названия из проекта и пути к нему. 3. Если первые 2 пункта не помогут - залей проект архивом на форум.
0
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 19:12 [ТС] | 3 |
0
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 19:12 [ТС] | 4 |
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.11.2015, 19:32 | 6 |
(не критично) русские буквы в путях - признак идиота. 2. (критично) в архиве отсутствуют исходники. итого: архив в топку, проект - пересоздать заново.
0
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 19:55 [ТС] | 7 |
Понял, переделаю.
0
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 20:01 [ТС] | 8 |
Переделал.Шаблон_класса_List.rar
0
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 20:20 [ТС] | 10 |
Проблема всё таже: не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
01.11.2015, 20:52 | 11 | |||||
Сообщение было отмечено artart96 как решение
Решение
ну то есть,
по поводу русских буковок в файловых путях - эту информацию вы так и не восприняли? ошибка 1: ошибка 2. Итого: файл main.cpp заменить на:
1
|
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
|
|
01.11.2015, 21:02 [ТС] | 12 |
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.11.2015, 22:39 | 13 |
1
|
01.11.2015, 22:39 | |
01.11.2015, 22:39 | |
Помогаю со студенческими работами здесь
13
Чем отличается шаблонный метод класса от шаблонного класса? Реализация шаблонного метода с переменным числом параметров Создание Шаблонного класса Инстанцирование шаблонного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |