用shared_ptr向量重载ostream朋友运算符

1 c++ class friend shared-ptr

我试图以类的朋友的身份重载ostream运算符以构建电路的组件,但是它不断返回地址。

在“ Circuit_classes.h”文件的串联电路类中:

friend ostream& operator<< (ostream& os, series_circuit const& myCircuit);
Run Code Online (Sandbox Code Playgroud)

在文件“ Circuit_classes.cpp”中:

ostream& operator<<(ostream& os, series_circuit const& myCircuit){
    os << "Output: " << myCircuit.frequency << endl;
    return os;
}
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

运行程序时在命令行中输出:

0325E180
Run Code Online (Sandbox Code Playgroud)

Dei*_*Dei 5

cout << circuit_vector[0] << endl;
Run Code Online (Sandbox Code Playgroud)

circuit_vector[0]产生std::shared_ptr正在打印的a。

您必须取消引用它才能到达对象本身。

cout << *circuit_vector[0] << endl;
Run Code Online (Sandbox Code Playgroud)