c++ - 使用 shared_ptr vector 重载 ostream 友元运算符

标签 c++ class shared-ptr friend

我正在尝试重载 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/

相关文章:

c++ - 为什么 std::shared_ptr 起作用?

c++ - "Guessing"从双向链表的哪一侧开始

c++ - 如何初始化一个unique_ptr

c++ - OpenCV 2 是否为编码图像的快速片段解码提供任何 api?

class - scala 案例类问题

class - 需要有关 Matlab 多类分类器的帮助

c++ - 从引用创建 shared_ptr

c++ - 识别标识符不工作的派生类

C++ 并行化 : Fast way to "reinitialize" array

C++ 虚拟析构函数