Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Шаблон лружественной функции


Автор: jazzmen 24.11.2007, 16:28
почему у меня при обьявлении шаблона дружеских финкций компилятор не пропусакает код и пишет "Declaration terminated incorrectly" ???

Код

    template <class F> friend void slag(matrix<F>*,matrix<F>*);
    template <class F> friend void vich(matrix<F>*,matrix<F>*);
    template <class F> friend void umng(matrix<F>*,matrix<F>*);




Автор: Alek86 24.11.2007, 16:41
имхо, все верно...
может, покажешь, где эти строчки написаны?

Автор: JackYF 24.11.2007, 16:43
class matrix {...}

объявлен выше и подключен?

Автор: Alek86 24.11.2007, 16:46
проверил

Код

template<typename T>
class matrix{};

struct C1 {
    template <class F> friend void slag(matrix<F>*,matrix<F>*);
    template <class F> friend void vich(matrix<F>*,matrix<F>*);
    template <class F> friend void umng(matrix<F>*,matrix<F>*);
};

int main () {
}

на VS2005 прекрасно компилится (хотя ее уже ловили на недобросовестности :( )

Автор: jazzmen 24.11.2007, 18:31
да класс подключен, и у меня это обьявление в public

Код

const int n=3;
template <class T>
class matrix
{
public:
    template <class F> friend void slag(matrix<F>*,matrix<F>*);
    template <class F> friend void vich(matrix<F>*,matrix<F>*);
    template <class F> friend void umng(matrix<F>*,matrix<F>*);
...
}

Автор: Alek86 24.11.2007, 18:40
единственная ошибка - что ";" забыл после объявления класса.
а так, вроде, все нормально

какой компилер?

Автор: jazzmen 24.11.2007, 19:19
после класса ";" не надо.

у меня С++ Borland 5.0

Автор: Alek86 24.11.2007, 19:31
Цитата(jazzmen @  24.11.2007,  19:19 Найти цитируемый пост)
после класса ";" не надо.


эх...
ртфм, как говорится....
поставь ";" - убедись

Автор: Greeen 24.11.2007, 19:36
Цитата(jazzmen @  24.11.2007,  19:19 Найти цитируемый пост)
после класса ";" не надо

 smile надо

Добавлено через 16 секунд
опоздал ))

Автор: UnrealMan 24.11.2007, 20:14
Цитата(jazzmen @  24.11.2007,  19:19 Найти цитируемый пост)
у меня С++ Borland 5.0

Выкинь бяку.

Автор: Alek86 24.11.2007, 21:05
тут, помойму собирались вообще ветку для 3.1 создавать
так что этот компилер еще и неплох.

хотя для поддержки шаблонов и буста лучшеб поновей

Добавлено через 13 секунд
кстати, то был оффтоп

Автор: Любитель 24.11.2007, 23:04
Цитата(Alek86 @  24.11.2007,  21:05 Найти цитируемый пост)
тут, помойму собирались вообще ветку для 3.1 создавать

Только лишь для бедных студентов smile

Автор: jazzmen 25.11.2007, 14:05
так значит если у меня в 5.0 не компилирует, то в более новых вервсиях С++ закомпилирует...

Автор: Alek86 25.11.2007, 14:08
возможно.
даже с ";" не компилит?
ошибка может именно ее и касаться

Автор: jazzmen 25.11.2007, 14:11
я ставил ";" у меня кучу ошибок тогда выдаёт, просто дрожь по телу

Автор: Alek86 25.11.2007, 14:13
значит, меня компилер
старые с шаблонами очень не дружат....

Автор: Любитель 25.11.2007, 14:19
Цитата(jazzmen @  25.11.2007,  14:11 Найти цитируемый пост)
я ставил ";" у меня кучу ошибок тогда выдаёт, просто дрожь по телу

Что-что, а ; нужна здесь точно smile Если куча ошибок - 
Цитата(Alek86 @  25.11.2007,  14:13 Найти цитируемый пост)
меняй компилер


Автор: archimed7592 25.11.2007, 15:20
А если без шаблонов, и без ";" - скомпилит? smile

Автор: Alek86 25.11.2007, 16:15
полуоффтоп
archimed7592, ты же знаешь ответ smile

Автор: archimed7592 25.11.2007, 16:17
Цитата(Alek86 @  25.11.2007,  16:15 Найти цитируемый пост)
archimed7592, ты же знаешь ответ smile 

Ессно, я знаю, что нормальный компилятор такое компилировать не должен(и все компиляторы, которыми мне приходилось пользоваться так и поступали).
Но я честно не знаю, откомпилит ли это дело bcc-5 smile.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)