c++ - 将 RAII 结构作为二维数组传递给函数

标签 c++ multidimensional-array

有一个函数,接受二维数组:

void foo ( double ** p ) 
{ /*writing some data into p*/ }

我不想将原始二维数组传递给此函数,因为我不想管理内存调用 newdelete .我也不想将函数签名更改为 void foo ( std::vector< std::vector<double> >& ) .我做不到 foo作为模板函数(在我的项目中它是一个 COM 接口(interface)方法)。

我想传递一些 RAII 对象对其进行原始装饰,例如

void foo ( double * p ){}
std::vectore<double> v(10);
p( &v[0] );

有没有办法对二维数组执行此操作?我试过了

std::vector< std::vector<int> > v;
foo( &v[0][0] )

std::vector< std::tr1::shared_ptr<int> > v;

但我遇到编译错误 error C2664 - cannot convert parameter .

另外,在这种情况下,可以确定函数内部的原始地址算法工作正常吗?

没有 C++11,二维数组的大小是已知的。

最佳答案

一个可能的解决方案是改变:

std::vector< std::vector<int> > v;
foo( &v[0][0] )

std::vector< std::vector<int> > v;
std::vector<int*> v_ptr;
for (...) {
    v_ptr[i] = &v[i][0];
}
foo( &v_ptr[0])

关于c++ - 将 RAII 结构作为二维数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005643/

相关文章:

java - Unicode码指向字节并反转: how do you do that in C++?

c++ - 静态常量 POD 与常量 POD

format - 漂亮地打印固定宽度字段中的值

使用 C 中的数组计算直角三角形的斜边

python - C++ 和 cython - 寻求一种避免模板限制的设计模式

c++ - 如何在 QML 中显示来自 QTextDocument 的分页文本?

c++ - 如何解析变量和函数引用(链接器和编译器)?

java - 在 Java 中创建一个二维对象数组

c - 在C中返回值后如何回调函数

java - 将二维数组写入字符串,然后写入 .txt 文件 - Java