[C++] gcc 4.0.1 & friend templates...

der_Kay

der_Kay

Aktives Mitglied
Thread Starter
Dabei seit
02.09.2004
Beiträge
1.765
Reaktionspunkte
25
Hallo,

wie bringe ich g++ ( powerpc-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 build 5247 ) den folgenden Code unter Beibehaltung der Nebenbedingungen bei:
- namespace
- _t protected
- friend-Beziehung
- operator<<-Syntax und Semantik: cout << f << c;

Das Problem ist der überladene operator<< als friend-Template. Code zum Runterladen hängt unten dran.

Dankbar wäre ich, wenn jemand innerhalb der C++-Referenz Verstösse diagnostizieren kann und/oder den Fix hinbekommt.

Code:
#include <iostream>

namespace app {

template<typename T>
class myClass
{
protected:
    T _t;

public:
    myClass(const T& t=T()) : _t ( t ) {;}

    template<typename T>
    friend std::ostream& operator<< ( std::ostream&, myClass<T>& );
};

using std::ostream;
template<typename T>
ostream& operator<< ( ostream& os, app::myClass<T>& c)
{ return os << c._t; }

};

int main (int argc, char* argv[])
{
    typedef app::myClass<float> float_class;
    typedef app::myClass<char> char_class;

    float_class f ( 42.0 );
    char_class c ( 'X' );

    std::cout << c << f;
    return 0;
}


Vielen Dank fürs Draufschauen,

Kay

p.s.: Das ist keine Spinnerei aus Langeweile, sondern stellt ein echtes Hindernis für mein Klassenlayout dar. Ich wollte nicht unbedingt betonen, daß das "woanders" läuft...
http://i28.photobucket.com/albums/c209/herbert321/70x70_visual_studio.pngVisual C++ 2005 Express Edition
 
Zuletzt bearbeitet:
Zurück
Oben Unten