Как я могу использовать cout << myclass - PullRequest
60 голосов
/ 05 июня 2010

myclass - это класс C ++, написанный мной, и когда я пишу:

myclass x;
cout << x;

Как мне вывести 10 или 20.2, например integer или float?

Ответы [ 4 ]

76 голосов
/ 05 июня 2010

Обычно при перегрузке operator<< для вашего класса:

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;
}
19 голосов
/ 05 июня 2010

Вам необходимо перегрузить оператор <<,

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

Затем, когда вы делаете cout << x (где x имеет тип myclass в вашем случае), он выведет все, что вы сказали в методе. В приведенном выше примере это будет член x.somevalue.

Если тип члена не может быть добавлен непосредственно к ostream, то вам также потребуется перегрузить оператор << для этого типа, используя тот же метод, что и выше.

8 голосов
/ 05 июня 2010

это очень просто, просто внедрите:

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

Вам нужно вернуть ссылку на os, чтобы связать выход (cout << foo << 42 << endl) </p>

0 голосов
/ 22 апреля 2019

Альтернатива:

struct myclass { 
    int i;
    inline operator int() const 
    {
        return i; 
    }
};
...