web-dev-qa-db-fra.com

Comment puis-je utiliser cout << myclass

myclass est une classe C++ écrite par moi et quand j'écris:

myclass x;
cout << x;

Comment puis-je sortir 10 ou 20.2, comme une valeur integer ou float?

62
ali

En général, en surchargeant operator<< pour votre classe:

struct myclass { 
    int i;
};

std::ostream &operator<<(std::ostream &os, myclass const &m) { 
    return os << m.i;
}

int main() { 
    myclass x(10);

    std::cout << x;
    return 0;
}
77
Jerry Coffin

Vous devez surcharger le << opérateur,

std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
      os << obj.somevalue;
      return os;
}

Ensuite, quand vous faites cout << x (où x est de type myclass dans votre cas), il affichera tout ce que vous lui avez dit dans la méthode. Dans le cas de l'exemple ci-dessus, ce serait le x.somevalue membre.

Si le type du membre ne peut pas être ajouté directement à un ostream, vous devrez alors surcharger le << opérateur pour ce type également, en utilisant la même méthode que ci-dessus.

19
Rich Adams

c'est très simple, implémentez simplement:

std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
   os << foo.var;
   return os;
}

Vous devez renvoyer une référence à os afin de chaîner la sortie (cout << foo << 42 << endl)

8

Alternative:

struct myclass { 
    int i;
    inline operator int() const 
    {
        return i; 
    }
};
0
Emil Mocan