Avatar billede soreno Praktikant
12. februar 2002 - 18:40 Der er 2 kommentarer og
1 løsning

overload af <<

template <class T> ostream& operator<< (ostream &os, const T &t)
{
    os << "Test" << endl;
    return os;
}

giver fejlen:
error C2667: '<<' : none of 2 overload have a best conversion

jeg har deklereret den som en fri funktion. hvorfor fejler det?
Avatar billede chries Nybegynder
12. februar 2002 - 22:54 #1
Min compiler siger operatoren ikke tager to parametere.
error C2804: binary 'operator <<' has too many parameters

class Test
{
public:
    template <class T>
    ostream& operator<< (ostream &os, const T &t)
    {
        os << "Test" << endl;
        return os;
    }
};

Skal du ikke fjerne template tingen og kun bruge streamen ?

    ostream& operator<< (ostream &os)
    {
        os << "Test" << endl;
        return os;
    }

så når man klader:

Test t;
ostream Object( pStreamBuf );

Object << t;

Bliver indholdet af t streamet ned i Object ?!?
Avatar billede chries Nybegynder
12. februar 2002 - 22:58 #2
Glem lige:
Skal du ikke fjerne template tingen og kun bruge streamen ?

    ostream& operator<< (ostream &os)
    {
        os << "Test" << endl;
        return os;
    }

Sad og sov halvt :-)
Avatar billede soreno Praktikant
13. februar 2002 - 15:09 #3
ikke helt, men det er ikke T jeg skal have skreven ud (det er en container klasse jeg har lavet) men containeren.. altså:

template <class T> ostream& operator<< (ostream &os, const Vektor<T> &vect)
{                                                          ^^^^^^^^^
    os << "Test" << endl;
    return os;
}

men tak for hjælpen alligevel, det var nok til at guide mig videre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester