Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

friend et fonction template

1 réponse
Avatar
Etienne
Bonjour,

j'ai un zolie programe qui compile bien avec g++ 4.1 mais pas avec les
pr=E9c=E9ntes versions de g++ (3.4 et 2.95). Ma question c'est un
probl=E8me de g++ ou de mon programme (ce qui semble plus probable) :

#include <iostream>
#include <string>

using namespace std;

class Pouet;

namespace N
{
template <class T>
void Test(void)
{
T t;

t.print();
}
}

class Pouet
{
public:
void print(void)
{
cout << "Pouet::print" << endl;
}

friend void N::Test<Pouet>(void);

private:
Pouet(void)
{
}
};

int main(void)
{
N::Test<Pouet>();

return 0;
}

Le message d'erreur est :

t17.cc:27: erreur: =ABvoid N::Test()=BB should have been declared inside
=ABN=BB

Pour corriger ce problem, je suis obliger de rajouter dans le namespace
N

namespace N
{
template <class T>
void Test(void)
{
T t;

t.print();
}

void Test(void)
{
}
}

Voila
Etienne

1 réponse

Avatar
Jean-Marc Bourguet
"Etienne" writes:

j'ai un zolie programe qui compile bien avec g++ 4.1 mais pas avec les
précéntes versions de g++ (3.4 et 2.95). Ma question c'est un problème de
g++ ou de mon programme (ce qui semble plus probable) :


A mon avis, c'etait un probleme de g++ et il est fixe. Pour info, ton code
passe aussi avec como.

A+

--
Jean-Marc