如何在我的(模板化)类中使用std :: cout?

时间:2016-01-15 13:15:11

标签: c++ templates

我想重载<<运算符,将类实例打印到控制台,如下所示:

std::cout << instance << std::endl;

我在这里找到了一个解决方案:https://msdn.microsoft.com/en-us/library/1z2f6c2k.aspx

但是我无法使用它,因为我的课程是模板化的:

template<typename T>
myClass {
    //code...
};

修改 如果我尝试在类体中定义它,我会收到错误:it must take only one argument

2 个答案:

答案 0 :(得分:3)

当然,您可以使用该示例,只需根据您的模板进行调整。

而不是

ostream& operator<<(ostream& os, const Date& dt)

你需要

template<class T>
ostream& operator<<(ostream& os, const myClass<T>& dt)

答案 1 :(得分:1)

您可以尝试这一点(使其适应您的代码):

std::ostream& operator<<(std::ostream& os, const T& obj)
{
    // write obj to stream
    return os;
}