微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用模板为 const 使用运算符重载

如何解决如何使用模板为 const 使用运算符重载

我试图重载

重载运算符“

我在 MAC 和 C++ 17 上使用带有 gcc 的 Clion。有人可以帮助我理解上述错误的含义以及如何修复它。代码如下。谢谢!

template <typename T>
std::ostream& operator<<(std::ostream& ost,const T data) {
    printf("I am very happy");
    return ost;
}

int main() {

    const char s = 10;

    std::cout << s << std::endl;
}

解决方法

正如上面的评论提到的,你不能重载流输出的主要类型。它已在标准库中定义。因此,为了打印你的overlaod,你必须发明一些不属于主要类型的用户类型,并将用户类型流出来。这将直接导致您的超负荷。

#include <iostream>
template <typename T>
    std::ostream& operator<<(std::ostream& ost,const T data) {
         printf("I am very happy");
         return ost;
        }
int main() {
    struct mytype{  };
    mytype s;
    std::cout << s << std::endl;
}

此代码将打印您的字符串“我很高兴”。开心点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。