PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.cplus > Declare a Friend function which is a template member function of adifferent class
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Declare a Friend function which is a template member function of adifferent class

Réponse
 
LinkBack Outils de la discussion
Vieux 26/02/2008, 09h34   #1
getrakesh@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Declare a Friend function which is a template member function of adifferent class

Hi All,

I wanted to know how to declare a friend function which is a member
function of a different class.

Eg:
/* Class which contains the member function to be declared as friend
*/
template <class T, int W>
class A
{
B obj;
public:
void foo(T val); // Function to be declared as a friend.
}

template <class T, int W>
void A<T,W>::foo(val)
{
obj.val = val;
}

/* Class inside which the friend function is to be declared */
template <class U>
class B
{
U val;
public:
friend A<class T, class W>::foo(W val); // Declare friend.
}

I cant seem to get the syntax right. Please let me know.

Thanks
Rakesh
  Réponse avec citation
Vieux 26/02/2008, 11h10   #2
Marcel Müller
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Declare a Friend function which is a template member functionof a different class

getrakesh@gmail.com schrieb:
> /* Class inside which the friend function is to be declared */
> template <class U>
> class B
> {
> U val;
> public:
> friend A<class T, class W>::foo(W val); // Declare friend.
> }
>
> I cant seem to get the syntax right. Please let me know.


Something like that.

template <class U>
class B
{
U val;
public:
template <int W>
friend void A<U, W>::foo(); // Declare friend.
}

But this won't work for your purpose anyway because of the cyclic
dependancy of the definitions of class A and class B. A need to be
defined befor B because the friend declaration won't work otherwise. B
needs to be defined before A because it is a member of A.


Marcel
  Réponse avec citation
Vieux 26/02/2008, 11h32   #3
Triple-DES
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Declare a Friend function which is a template member function ofa different class

On 26 Feb, 10:34, getrak...@gmail.com wrote:
> Hi All,
>
> I wanted to know how to declare a friend function which is a member
> function of a different class.
>
> Eg:
> /* Class which contains the member function to be declared as friend
> */
> template <class T, int W>
> class A
> {
> B obj;


This causes a circular dependency. Also you are missing B's template
parameter

> public:
> void foo(T val); // Function to be declared as a friend.
> }
>
> template <class T, int W>
> void A<T,W>::foo(val)
> {
> obj.val = val;
>
> }
>
> /* Class inside which the friend function is to be declared */
> template <class U>
> class B
> {
> U val;
> public:
> friend A<class T, class W>::foo(W val); // Declare friend.


Try:
template<class T, int W>
friend void A<T,W>::foo(W);
>
> }
>
> I cant seem to get the syntax right. Please let me know.


Hope this s.
DP
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 19h17.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,09834 seconds with 11 queries