问题描述
我试图重载
重载运算符“
我在 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;
}
此代码将打印您的字符串“我很高兴”。开心点。