дружественная функция-шаблон в шаблоне класса
От: Molchalnik  
Дата: 10.07.11 10:26
Оценка:
пытаюсь в проекте объявить дружественную функцию-шаблон в шаблоне класса. Всё время выходит какая-нибудь ерунда. Вот пример:




template<class Tn> class A
{
private:
void someF(){};
};
template<class Tn> class B: private A<Tn>
{
};
template<class Tn> class C: public B<Tn>
{
public:
void Do(C<Tn> &a) {};
friend void F(C<Tn> &a, C<Tn> &b);
void start(void){};
};

template<class Tn> void F(C<int> &a,C<int> &b)
{
a.Do(b);
b.Do(a);
a.someF();
b.someF();
}


//---------------------------------------------------------------------------
void __fastcall TForm2::FormActivate(TObject *Sender)
{
C<int> SOMEclassX,SOMEclassY;
SOMEclassX.start();
F(SOMEclassX,SOMEclassY);
}

в результате получаю сообщение Exception handle variable may not be used here на строке

F(SOMEclassX,SOMEclassY);

Подскажите, что я делаю не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.