PDA

Visualizza la versione completa : [C++] Problemi con g++


WilliDiTommaso
22-04-2010, 10:20
Salve, sto tentando di compilare un programma utilizzando G++ 4.4
Quando compilo mi da il seguente warning:

--> warning: friend declaration 'bool operator< (const pippo<pluto>& ,const pippo<pluto>&)' declare a non-template function

Ovviamente nel' header prova.h ho dichiarato un template del genere:

template <class pluto> class pippo{
public:
...
friend bool operator< (const pippo<pluto> &x , const pippo<pluto> &y);
...
};

Il compilatore stesso mi suggerisce di aggiungere <> dopo il nome della funzione 'operator<' ma facendo cosė passo da un warning al seguente errore:

--> declaration of 'operator<' as non-function

Se non ho letto male, qualcuno dichiara che con G++3.4.1 il tutto funziona.

Sapreste gentilmente dirmi se esiste un modo, senza installare la versione pių vecchia, per ovviare al problema?

Grazie.
William

MacApp
22-04-2010, 11:43
/*
$ g++ --version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1)
$ g++ -Wall -ansi -pedantic -Wextra -Wconversion main.cpp
*/

#include <iostream>

template <typename pluto> class pippo{
public:
template <typename U> friend bool operator < (const pippo<U> &x , const pippo<U> &y);
};

template <typename U> bool operator < (const pippo<U> &, const pippo<U> & ){
return true;
}

int main (void){
pippo <int> pippo1;
pippo <int> pippo2;
std::cout << (pippo1 < pippo2) << std::endl;
return 0;
}

WilliDiTommaso
22-04-2010, 14:35
Grazie mille!!!
Ora compila. :D

Loading