使用 shared_ptr 向量重载 ostream 友元运算符
Overloading ostream friend operator with shared_ptr vector
我试图在 class 中重载 ostream 运算符作为朋友来构建电路组件,但它一直返回地址。
在串联电路中 class 在文件中 "Circuit_classes.h":
friend ostream& operator<< (ostream& os, series_circuit const& myCircuit);
文件中"Circuit_classes.cpp":
ostream& operator<<(ostream& os, series_circuit const& myCircuit){
os << "Output: " << myCircuit.frequency << endl;
return os;
}
其中 frequency
在 class 头文件中定义为 60。
在我的主程序中,"AC Circuits.cpp"
vector<shared_ptr<circuit>> circuit_vector;
circuit_vector.push_back(shared_ptr<circuit>(new series_circuit));
cout << circuit_vector[0] << endl;
程序为运行时在命令行中的输出:
0325E180
cout << circuit_vector[0] << endl;
circuit_vector[0]
产生一个 std::shared_ptr
,这就是正在打印的内容。
您必须取消引用它才能访问对象本身。
cout << *circuit_vector[0] << endl;
我试图在 class 中重载 ostream 运算符作为朋友来构建电路组件,但它一直返回地址。
在串联电路中 class 在文件中 "Circuit_classes.h":
friend ostream& operator<< (ostream& os, series_circuit const& myCircuit);
文件中"Circuit_classes.cpp":
ostream& operator<<(ostream& os, series_circuit const& myCircuit){
os << "Output: " << myCircuit.frequency << endl;
return os;
}
其中 frequency
在 class 头文件中定义为 60。
在我的主程序中,"AC Circuits.cpp"
vector<shared_ptr<circuit>> circuit_vector;
circuit_vector.push_back(shared_ptr<circuit>(new series_circuit));
cout << circuit_vector[0] << endl;
程序为运行时在命令行中的输出:
0325E180
cout << circuit_vector[0] << endl;
circuit_vector[0]
产生一个 std::shared_ptr
,这就是正在打印的内容。
您必须取消引用它才能访问对象本身。
cout << *circuit_vector[0] << endl;