C++ostream重载不起作用
C++ ostream overloading not working
编辑:
经过一些评论,这是我的代码现在,下面是这个链接。(更好,但我仍然有一个错误)
与众不同:
ostream& operator<<(ostream& out, Device& v) {
out << "Device " << v.get_name() << " Has an ID of: " << v.get_id();
return out;
}
内部设备类别:
friend ostream& operator<<(ostream& os, const Device& v);
我的呼叫:(设备类型为Node,val返回设备)
cout << device->val << endl;
我的错误:
错误LNK2019未解析的外部符号"class std::basic_stream>std::char_traits>&__cdecl运算符<<(类std::basic_stream>&,类设备const&)"(??6@YAAAV$basic_ostream@DU$char_traits@D@std@@@std@@AAV01@ABVDevice@@@Z)在函数"void __cdecl print_devices(class Node*)"中引用(?print_devices@@YAXPAV$Node@VDevice@@@@@Z)
原件:
有人教我操作员过载是这样的:
ostream& Device::operator<<(ostream &out) {
out << "Device " << this->name << " Has an ID of: " << this->id;
return out;
}
但是当尝试使用这种过载-(设备类型为设备)
cout << device << endl;
它在读写中标记-
错误C2679二进制'<lt;':找不到占用右手的运算符类型为"设备"的操作数(或没有可接受的转换)
为什么会出现此错误,以及如何修复?我在网上看了看,但找不到在类内部工作的方法,只有这个:
朋友ostream&运算符<lt;(ostream&out,Point&cPoint);
这对我也不起作用。
您在Device
类中声明的是
friend ostream& operator<<(ostream& os, const Device& v);
但是你提供的实现是
ostream& operator<<(ostream& out, Device& v) {
out << "Device " << v.get_name() << " Has an ID of: " << v.get_id();
return out;
}
这不是一回事!您告诉编译器有一个friend
函数,它引用了ostream
和Device
的常量引用,但您提供的函数在Device
前面漏掉了const
。
重载C++STL方法
我不相信你能让<lt;基于该答案对STL流执行运算符。
您发布的错误是编译器找不到函数实现。
#include <iostream>
struct MyType
{
int data{1};
};
std::ostream& operator<< (std::ostream& out, const MyType& t)
{
out << t.data;
return out;
}
int main()
{
MyType t;
std::cout << t << std::endl;
return 0;
}
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- 为什么重载运算符>在参数声明 const 时不起作用?
- 重载"+="运算符:c+=a_times_b 有效,但 c+=a*b 不起作用?
- = 重载不起作用
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 为什么 SFINAE 在这个简单的成员函数重载中不起作用
- C++ 运算符重载 += 有效,但<<不起作用
- 需要使用 Book* 头变量重载运算符,但不起作用
- C++ 运算符删除重载对派生类不起作用
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- 运算符重载如何工作,为什么在我的情况下不起作用?
- 为什么重载运算符不起作用?
- 重载'='不起作用
- 二叉搜索树<<运算符重载不起作用
- 重载运算符<<不起作用
- 重新赋值在运算符中不起作用 = 重载
- 类构造函数重载不起作用
- c++中的函数重载不起作用
- 为什么 [] 的重载函数在这里不起作用?
- 如果重载函数仅被部分重写,则多态性不起作用