我正在尝试重载 ostream 运算符作为类中的友元来构建电路组件,但它一直返回地址。
在文件“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
在类头文件中定义为 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;
关于c++ - 使用 shared_ptr vector 重载 ostream 友元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212927/