|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.02.2011, 18:15 | #1 |
Регистрация: 14.02.2011
Сообщений: 4
|
Ошибки. Шаблоны.
template <typename T>
Set<T>& operator=(const Set<T>& s) { n = obj.n; array = new T [n]; for (int i = 0; i < n; i++) array[i] = obj.array[i]; return this; }; (Указатель на ошибку) Результат: d:\microsoft visual studio\myprojects\progr_2_sem\lr1\s tdafx.h(90) : error C2801: 'operator =' must be a <Unknown> member template <typename T> (Указатель на ошибку) bool Set<T>::isElem(T n) { for(int i = 0; i < n; i++) if(array[i] == n) return true; return false; }; Результат: d:\microsoft visual studio\myprojects\progr_2_sem\lr1\s tdafx.h(92) : error C2954: template definitions cannot nest template <typename T> Set<T> Set<T>::unionSets(const Set<T>& s) { int count = n + s.n; int i = 0; Set<T> tmpSet(count); for(int k = 0; k < count; k++) { if(k < n) { tmpSet.array[i] = array[i]; i++; } if(k == n) i = 0; if ((k >= n) && (!(tmpSet.isElem(s.array[i]))) { tmpSet.array[i] = s.array[i]; i++; } (Здесь указатель на ошибку) } tmpSet.count = n + i; return tmpSet; }; Результат: d:\microsoft visual studio\myprojects\progr_2_sem\lr1\s tdafx.h(190) : error C2958: the left parenthesis '(' found at 'd:\microsoft visual studio\myprojects\progr_2_sem\lr1\s tdafx.h(186)' was not matched correctly Вывод: нехрен чё-то добавлять! Знаю, знаю =) Объясните, пожалуйста, ошибки. |
14.02.2011, 19:16 | #2 |
:D
Форумчанин
Регистрация: 26.09.2010
Сообщений: 570
|
пожалуйста полный код
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery |
14.02.2011, 20:35 | #3 |
Регистрация: 14.02.2011
Сообщений: 4
|
полный код
Написал два класса - шаблона: множества и итератор для оного.
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__610FB712_BEC F_4F04_9867_59889EDF1CB8__INCLUDED_ ) #define AFX_STDAFX_H__610FB712_BECF_4F04_98 67_59889EDF1CB8__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <iostream.h> template <typename T> class Iterator; template <typename T> class Set { protected: T* array; int n; public: Set(){} Set(int); Set(const Set<T>&); ~Set(); public: Iterator<T>* createIterator() { Iterator<T>* it = new Iterator<T> (this); return it; } void addElem(const T&); bool removeElem(const T&); bool isElem(T); Set intersectionSets(const Set<T>&); Set unionSets(const Set<T>&); Set substracSets(const Set<T>&); friend ostream& operator<<(ostream&, Set<T>&); friend istream& operator>>(istream&, Set<T>&); Set<T> operator=(const Set<T>&); int getElemC() { return n; } int getElem(int in) { return array[in]; } }; template <typename T> Set<T>::Set(int c): n(c), array(new T [c]) {}; template <typename T> Set<T>::Set(const Set<T>& obj) { n = obj.n; array = new T [n]; for (int i = 0; i < n; i++) array[i] = obj.array[i]; }; template <typename T> Set<T>::~Set() { delete [] array; }; template <typename T> Set<T>& operator=(const Set<T>& s) { n = obj.n; array = new T [n]; for (int i = 0; i < n; i++) array[i] = obj.array[i]; return *this; }; template <typename T> bool Set<T>::isElem(T m) { for(int i = 0; i < m; i++) if(array[i] == n) return true; return false; }; template <typename T> void Set<T>::addElem(const T& elem) { T* p = new T [n+1]; for (int i = 0; i < n+1; i++) p[i] = array[i]; p[n+1] = elem; delete [] array; array = new T [++n]; for (i = 0; i < n; i++) array[i] = p [i]; delete [] p; }; template <typename T> bool Set<T>::removeElem(const T& elem) { int pos = 0; for(int i = 0; i < n && array[i] != elem; i++) {} if (pos != n) { T* p = new T [n-1]; for(i = 0; i < n-1; i++) p[i] = array[i<pos ? i:i+1]; delete [] array; array = new T [--n]; for(i = 0; i < n; i++) array[i] = p[i]; delete [] p; return true; } else return false; }; template <typename T> Set<T> Set<T>::intersectionSets(const Set<T>& s) { int count = 0; n < s.n ? (Set<T> tmpSet(s.n)) : (Set<T> tmpSet(n)); for (int i = 0; i < n && i < s.n; i++) { if(array[i] == s.array[i]) { tmpSet.array[i] = array[i]; count++; } } tmpSet.n = count; return tmpSet; }; template <typename T> Set<T> Set<T>::unionSets(const Set<T>& s) { int count = n + s.n; int i = 0; Set<T> tmpSet(count); for(int k = 0; k < count; k++) { if(k < n) { tmpSet.array[i] = array[i]; i++; } if(k == n) i = 0; if ((k >= n) && (!(tmpSet.isElem(s.array[i]))) { tmpSet.array[i] = s.array[i]; i++; } } tmpSet.count = n + i; return tmpSet; }; template <typename T> Set<T> Set<T>::substracSets(const Set<T>& s) { Set<T> tmpSet = this->intersectionSets(s); Set<T> mainSet(this->n); for (int i = 0; i < this->n; i++) mainSet.array[i] = this->array[i]; for(int i = 0; i < tmpSet.count; i++) { if(mainSet.array[i] == tmpSet.array[i]) mainSet.removeElem(tmpSet.array[i]); } return mainSet; }; template <typename T> class Iterator { Set<T>* a; int i; public: Iterator(Set<T>* p): a(p), i(0) {} public: void next() { if(i < a->getElemC()-1) i++; } T getCurItem() { return a->getElem(i); } bool isMore() { if(i < a->getElemC() - 1) return true; else return false; } }; template <typename T> istream& operator>>(istream& stream, Set<T>& s) { int count = 0; int m[256]; cout<<"Enter the first set: "; for(int i = 0; i < 5; i++) stream>>m[i]; s.array = new T [5]; s.n = 5; for(i = 0; i < 5; i++) s.array[i] = m[i]; return stream; }; template <typename T> ostream& operator<<(ostream& stream, Set<T>& s) { stream<<'{'; for(int i = 0; i < s.n; i++) stream<<s.array[i]<<';'; stream<<'}'; return stream; }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__610FB712_BEC F_4F04_9867_59889EDF1CB8__INCLUDED_ ) |
15.02.2011, 14:10 | #4 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 92
|
У вас
Код:
Должно быть Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шаблоны | Freddi Krjuger | Общие вопросы C/C++ | 6 | 14.11.2010 20:55 |
Шаблоны С++ | Secc | Помощь студентам | 4 | 27.12.2009 17:35 |
Шаблоны, Си++ | Нataша | Помощь студентам | 1 | 11.12.2009 01:35 |
Шаблоны | bondik | Общие вопросы C/C++ | 10 | 04.05.2008 09:50 |