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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> template класс, template функция, Муть какая то 
:(
    Опции темы
azesmcar
Дата 12.10.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Здравствуйте

Такой вот вопрос
Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param);
};

template<class T, class FParam> void A<T>::some_function(FParam& param)
{

}


Чего не компилируется то? вроде так должно быть?
Ошибка
Цитата

test.cpp:12: prototype for `void A<T>::some_function(FParam&)' does not match any in class `A<T>'
test.cpp:8: candidate is: template<class T> template<class FParam> void
A::some_function(FParam&) test.cpp:12: template definition of non-template `void A<T>::some_function(FParam&)'


Это сообщение отредактировал(а) azesmcar - 12.10.2005, 15:05
PM   Вверх
Dark Elf
Дата 12.10.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param);
};

template<class FParam> void A<T>::some_function(FParam& param)
{

}


Это сообщение отредактировал(а) Dark Elf - 12.10.2005, 15:08


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
azesmcar
Дата 12.10.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Ошибка
Цитата
test.cpp:11: type/value mismatch at argument 1 in template parameter list for `
  template<class T> class A'
test.cpp:11:  expected a type, got `T'

PM   Вверх
Dark Elf
Дата 12.10.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Visual C++ 2003 компилит, Борланд правда что-то не хочет... какой у тебя компилятор?
Добавлено @ 15:46
Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param)
   {
        // Тело функции
   }
};

Так вот и Борланд скомпилил



--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
LPBOY
Дата 12.10.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param);
};
template<class T>
template<class FParam>
 void A<T>::some_function(FParam& param)
{
}

--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Earnest
Дата 12.10.2005, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



В VC 6.0 шаблонные функции шаблонных классов можно только внутри класса писать, увы. Баг у них такой.
А в VC 7 - как написал LPBOY.


--------------------
...
PM   Вверх
Dark Elf
Дата 12.10.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Earnest @ 12.10.2005, 18:30)
В VC 6.0 шаблонные функции шаблонных классов можно только внутри класса писать, увы. Баг у них такой.


В Borland C++ Builder 6 насколько я понимаю тоже... надеюсь Dexter изменит ситуацию



--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Guest
Дата 12.10.2005, 20:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ya tak ponimayu to li etot bug povsyudu, to li eto uje ne bag poskolku mne eta problema uje dva dnya nadoedaet v GCC. Mojet byt' prosto tak ustroen kompilyator. Kompilyator GCC, pod HP-Unix, Solaris, Linux...odno i toje, vezde vidaet oshibku, bez raznici, build environment odin i tot je.
  Вверх
Гость_azesmcar
Дата 12.10.2005, 20:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Оп-па. транслит заработал smile я думал надо только пт`ку поставить он автомати`ески переведет.
  Вверх
Dark Elf
Дата 12.10.2005, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Guest @ 12.10.2005, 20:41)
mne eta problema uje dva dnya nadoedaet v GCC


Пиши так как написал я - всовывай шаблонные функции шаблонных классов внутрь класса


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
LPBOY
Дата 12.10.2005, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ты хочешь сказать, что этот код не компилится под gcc?
Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param);
};
template<class T>
template<class FParam>
 void A<T>::some_function(FParam& param)
{
}

int main() {}

У меня нету gcc - не могу проверить, но не верится чтобы у такого компилятора как gcc были проблемы с таким простым кодом.
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Void
Дата 12.10.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



LPBOY
GCC 3.4.2 (MinGW) компилит без проблем.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
LPBOY
Дата 12.10.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Dark @ 12.10.2005, 20:53)
Пиши так как написал я - всовывай шаблонные функции шаблонных классов внутрь класса

Но тогда функция станет inline. Это не всегда хорошо.
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
azesmcar
Дата 13.10.2005, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата
Ты хочешь сказать, что этот код не компилится под gcc?

Этот компилится smile
Цитата
template <class T>
class A
{
public:
  template<class FParam>
  void some_function(FParam& param)
  {
        // Тело функции
  }
};

этот не компилился

Спасибо
PM   Вверх
Vyacheslav
Дата 13.10.2005, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dark @ 12.10.2005, 19:33)
В Borland C++ Builder 6 насколько я понимаю тоже...

Это почему?
Этот код спокойно компилиться под С++Builder6
Код

template <class T>
class A
{
public:
   template<class FParam>
   void some_function(FParam& param);
};
template<class T>
template<class FParam>
 void A<T>::some_function(FParam& param)
{

}




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0949 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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