Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шаблон локального класса 
:(
    Опции темы
AlterMann
Дата 15.12.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Приветсвую товарищей гуру smile 

Делаю шаблон класса:
Код

template <class T> class MyClass
{
  public:
   MyClass(); // бла бла бла... в общем не важно какой конструктор... или важно??
   void AddItem(char *,void (*)(T));
   void ShowAll();

  private:
   struct MyClassItem
   {
     char Name[20];
     void (*Func)(T);
   };
   MyClassItem Items[10];
   int Nums;
};

template <class T> MyClass <T>::MyClass() {...} // сам конструктор... тут Nums = 0;
template <class T> MyClass <T>::AddItem(char *name,void (*func)(T))
{
  strcpy(Items[Nums].Name,name);
  Items[Nums].Func = func;
  Nums++;
}
template <class T> MyClass <T>::ShowAll()
{
  // ... бла бла бла
  Items[4].Func(T);
  // ... бла бла бла
}

В общем примерно так...

Так вот, когда пытаюсь откомпилить (Turbo C++ IDE) - пишет что ошибка в синтаксисе определения шаблона... ):
Подскажите пожалуйста, где я не прав? (:

Это сообщение отредактировал(а) AlterMann - 15.12.2006, 18:42
PM MAIL WWW   Вверх
JackYF
Дата 15.12.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Поставь в определения шаблонов (строки 18,19) тип возвращаемого значения - void.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
AlterMann
Дата 15.12.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



прошу прощения...
когда своё сообщение писал забыл туда написать (грубая ошибка, но я только сегодня начал пробовать юзать темплейты...)
в общем, добавляю void (строки 19 и 25 (строка 18 - конструктор, там нет возвращаемого значения))

в итоге код выглядит так:
Код

template <class T> class MyClass
{
  public:
   MyClass(); // бла бла бла... в общем не важно какой конструктор... или важно??
   void AddItem(char *,void (*)(T));
   void ShowAll();
  private:
   struct MyClassItem
   {
     char Name[20];
     void (*Func)(T);
   };
   MyClassItem Items[10];
   int Nums;
};
template <class T> MyClass <T>::MyClass() {...} // сам конструктор... тут Nums = 0;
template <class T> void MyClass <T>::AddItem(char *name,void (*func)(T))
{
  strcpy(Items[Nums].Name,name);
  Items[Nums].Func = func;
  Nums++;
}
template <class T> void MyClass <T>::ShowAll()
{
  // ... бла бла бла
  Items[4].Func(T);
  // ... бла бла бла
}

и всё равно пишет, что ошибка синаксиса (Declaration syntax error) и указывает на 2 строки: на 1 и 16...

Это сообщение отредактировал(а) AlterMann - 15.12.2006, 23:42
PM MAIL WWW   Вверх
Daevaorn
Дата 15.12.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(AlterMann @  16.12.2006,  00:40 Найти цитируемый пост)
Items[4].Func(T);

что за Т?
Цитата(AlterMann @  16.12.2006,  00:40 Найти цитируемый пост)
и всё равно пишет, что ошибка синаксиса (Declaration syntax error)

Ответ:
Цитата(AlterMann @  15.12.2006,  19:41 Найти цитируемый пост)
(Turbo C++ IDE)


PM MAIL WWW   Вверх
AlterMann
Дата 16.12.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Цитата
что за Т?

Т - как параметр функции... тот тип, который может изменяться... ну шаблон ради этого изменяемого типа параметра функции и делаю...
Цитата
(Turbo C++ IDE)

а чо, не получится в нём сделать?.. простые шаблоны (ну как пример - вектор) - норм компилятся...

Это сообщение отредактировал(а) AlterMann - 16.12.2006, 16:56
PM MAIL WWW   Вверх
JackYF
Дата 18.12.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



AlterMann, у меня код с void'ами компилился на GCC. Так что тут дело, наверное, в Turbo C++ - компиляторе.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.