Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 18:07   #1
breate
Пользователь
 
Аватар для breate
 
Регистрация: 30.12.2008
Сообщений: 78
Злость помогите template<class> (Шаблоны и указатели)

circl.h
Код:
#ifndef _CIRCL_H
#define _CIRCL_H
 
template <class t>
class circl{
private:
circl *pNext,*pBack;
public:
t data;
circl();
circl(t T);
circl(t T,circl *back,circl *next);
~circl();
circl* push(circl *pHead,t T);
circl* remove(circl *pHead);
circl* mover(circl *pHead);
circl* movel(circl *pHead);
};
 
#endif  /* _CIRCL_H */
circl.cpp
Код:
#include "circl.h"
#define NULL 0;
template <class t>
circl< t >::circl()
{pNext=pBack=NULL;}
template <class t>
circl< t >::circl(t T)
{pNext=pBack=this;data=T;}
template <class t>
circl< t >::circl(t T,circl *back,circl *next)
{pNext=next;pBack=back;data=T;}
 
template <class t>
circl<t>::~circl(){}
template <class t>
circl* circl<t>::push(circl *pHead,t T)
{
circl *tmp=new circl(T,pHead,pHead->pNext);
pHead->pNext=tmp;
return pHead->pNext;
}
template <class t>
circl* circl<t>::remove(circl *pHead)
{
pHead->pNext->pBack=pHead->pBack;
pHead->pBack->pNext=pHead->pNext;
circl *tmp=pHead;
pHead=pHead->pBack;
delete tmp;
return pHead;
}
template <class t>
circl * circl<t>::mover(circl *pHead)
{
return pHead->pNext;
}
template <class t>
circl* circl<t>::movel(circl *pHead)
{
return pHead->pBack;
}
circl.cpp:23: error: expected constructor, destructor, or type conversion before ‘*’ token

ругается по всему виду на то что я хочу загнать в него указатель но идей как это исправить нет инкапсулировать головной указатель нехочу
Моя работа - Создание сайтов
breate вне форума Ответить с цитированием
Старый 23.10.2009, 19:36   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А если так:
Код:
template <class t>
class circl{
private:
circl<t> *pNext,*pBack;
public:
t data;
circl();
circl(t T);
circl(t T,circl<t> *back,circl<t> *next);
~circl();
circl<t>* push(circl<t> *pHead,t T);
circl<t>* remove(circl<t> *pHead);
circl<t>* mover(circl<t> *pHead);
circl<t>* movel(circl<t> *pHead);
};
pu4koff вне форума Ответить с цитированием
Старый 23.10.2009, 19:48   #3
breate
Пользователь
 
Аватар для breate
 
Регистрация: 30.12.2008
Сообщений: 78
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А если так:
Код:
template <class t>
class circl{
private:
circl<t> *pNext,*pBack;
public:
t data;
circl();
circl(t T);
circl(t T,circl<t> *back,circl<t> *next);
~circl();
circl<t>* push(circl<t> *pHead,t T);
circl<t>* remove(circl<t> *pHead);
circl<t>* mover(circl<t> *pHead);
circl<t>* movel(circl<t> *pHead);
};
неа проблема заключалась в том что g++ не поддерживает экспорт шаблонов класс целиком должен быть inline и всё...

я же писал что я дебил - так оно и есть, основа правильо а особенности компилятора не знаю... дэбил... что ещё сказать
Моя работа - Создание сайтов

Последний раз редактировалось breate; 23.10.2009 в 19:50.
breate вне форума Ответить с цитированием
Старый 23.10.2009, 23:17   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
неа проблема заключалась в том что g++ не поддерживает экспорт шаблонов класс целиком должен быть inline и всё...
шаблонный класс в любом компиляторе должен быть определен в одном файле
counter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с ШАБЛОНАМИ<Template> Suren Общие вопросы C/C++ 2 16.06.2009 19:16
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
[C] лабораторка. Указатели на функции. Помогите исправить ошибку) KrL^^ Помощь студентам 2 11.03.2009 22:33