C++11 将智能指针作为指向函数的指针的指针传递

C++11 将智能指针作为指向函数的指针的指针传递,c++11,smart-pointers,C++11,Smart Pointers,我试图传递一个智能指针作为一个函数的参数,这个函数的指针是指针的指针。我想知道是否有合适的解决办法 foo(Class** input) { // Do something } myClass = std::make_Unique<Class>(); foo(&myClass.get()) foo(类**输入) { //做点什么 } myClass=std::使_唯一(); foo(&myClass.get()) 这是行不通的,幸好行不通 您需要传递Foo**的原

我试图传递一个智能指针作为一个函数的参数,这个函数的指针是指针的指针。我想知道是否有合适的解决办法

foo(Class** input)
{
   // Do something
}

myClass = std::make_Unique<Class>();

foo(&myClass.get())
foo(类**输入)
{
//做点什么
}
myClass=std::使_唯一();
foo(&myClass.get())

这是行不通的,幸好行不通


您需要传递
Foo**
的原因大致有两个。它可能是一个需要2D数组(指向数组的指针数组)的函数,或者该函数的输出为
Foo*
(应该使用
Foo*&
)。在您的例子中,似乎您正在处理数组的情况,因为参数名为
input

,但它不起作用,这是一件好事


您需要传递
Foo**
的原因大致有两个。它可能是一个需要2D数组(指向数组的指针数组)的函数,或者该函数的输出为
Foo*
(应该使用
Foo*&
)。在您的例子中,似乎您正在处理数组情况,因为参数名为
input

,为什么要这样做?操纵智能指针管理的指针听起来有点危险。为什么要这样做?操作智能指针管理的指针听起来有点危险。我不愿意将
T**
称为2D数组。指针数组的内存布局与2D数组不同,即
T[N][M]
。差别很大,谢谢你的回复。它实际上是函数foo的返回值。但是我不能更改签名。@Mohsen67为什么要将指针传递给要返回指针的函数?我还能做什么?要么传递一个原始指针,要么我认为最好使用smartpointer@Mohsen67:嗯,你说得对,但签名不对。我不愿意称之为2D数组。指针数组的内存布局与2D数组不同,即
T[N][M]
。差别很大,谢谢你的回复。它实际上是函数foo的返回值。但是我不能更改签名。@Mohsen67为什么要将指针传递给要返回指针的函数?我还能做什么?要么传递一个原始指针,要么我认为最好使用smartpointer@Mohsen67字体你说得对,但签名不对。