C++ 解除唯一性\u ptr的冗余会导致内存地址无限打印
以下代码导致“res”的内存地址无限打印。我试图取消对“res”变量的引用,这样它就可以打印m_val。你知道它为什么无限打印吗C++ 解除唯一性\u ptr的冗余会导致内存地址无限打印,c++,pointers,unique-ptr,dereference,C++,Pointers,Unique Ptr,Dereference,以下代码导致“res”的内存地址无限打印。我试图取消对“res”变量的引用,这样它就可以打印m_val。你知道它为什么无限打印吗 class Resource { private: int m_val; public: Resource(int val) { m_val = val; } ~Resource() { } friend std::ostream& operator<<(std::ostream&
class Resource
{
private:
int m_val;
public:
Resource(int val) {
m_val = val;
}
~Resource() { }
friend std::ostream& operator<<(std::ostream& out, const Resource &res)
{
out << &res << ": " << res << "\n";
return out;
}
};
int main()
{
std::unique_ptr<Resource> res(new Resource(5));
if (res) {
std::cout << "*res: " << *res; //trying to dereference
}
return 0;
}
类资源
{
私人:
国际货币基金组织;
公众:
资源(int val){
m_val=val;
}
~Resource(){}
friend std::ostream&operator根据上述评论,完成以下工作:
out << &res << ": " << res.m_val << "\n";
<代码> >你的<代码> OHH,因为我使用它就像一个例程<代码> int fo(int x){返回fo(x);}……它自称为永久的。或者直到栈被耗尽。也许你的意思是“代码> OUT @ M.M谢谢,这样工作!普通的老的“MyVar”将在C++中工作……还没有得到C++的挂起。