我在重载ostream运算符时遇到了一些麻烦。有3个类,抽象基类Packet另一个继承自Packet的抽象类Sequence和类TimeHistory继承自Sequence的类。]
class Packet { //some stuff }; template <typename T = double> class Sequence : public Packet { std::vector<T> buffer; //some other stuff } template <typename T = double> class TimeHistory : public Sequence<T> { template <typename X> friend std::ostream &operator<<(std::ostream &out, Packet *A); //another stuff }
还有一个用于在对象中打印数据的朋友功能
std::ostream &operator<<(std::ostream &out, Packet *A) { TimeHistory<T> *th = dynamic_cast<TimeHistory<T> *>(A); out << th->device << th->description << th->channelNr; for (auto in : th->buffer) out << in << std::endl; return out; }
当我创建类的实例时:
std::unique_ptr<Packet> channel1 = std::make_unique<TimeHistory<double>>(/*some constructor stuff*/);
并调用函数
std::cout<<(channel1.get());
我在输出中仅得到一个存储单元地址:0x560c8e4f1eb0有人可以指出我在做什么错吗?
我在重载ostream运算符时遇到了一些麻烦。有3个类,抽象基类Packet另一个继承自Packet的抽象类,以及TimeHistory类,它继承了...
std::unique_ptr::get
将返回一个指向托管对象的指针。如果您想获得管理价值的参考,请使用
std::unique_ptr::get