C++通过引用传递动态分配的二维数组

标签 c++ arrays reference multidimensional-array

这个问题建立在之前提出的问题之上: Pass by reference multidimensional array with known size

我一直在努力弄清楚如何让我的函数很好地处理二维数组引用。我的代码的简化版本是:

    unsigned int ** initialize_BMP_array(int height, int width)
    {
       unsigned int ** bmparray;
       bmparray = (unsigned int **)malloc(height * sizeof(unsigned int *));
       for (int i = 0; i < height; i++)
       {
        bmparray[i] = (unsigned int *)malloc(width * sizeof(unsigned int));
       }
      for(int i = 0; i < height; i++)
        for(int j = 0; j < width; j++)
        {
             bmparray[i][j] = 0;
        }
    return bmparray;
    }

我不知道如何重写这个函数,以便它在我通过引用将 bmparray 作为一个空的 unsigned int ** 传入的地方工作,这样我就可以在一个函数中为数组分配空间,并且在另一个中设置值。

最佳答案

用一个类来包装它,然后通过引用传递对象

class BMP_array
{
public:
    BMP_array(int height, int width)
    : buffer(NULL)
    {
       buffer = (unsigned int **)malloc(height * sizeof(unsigned int *));
       for (int i = 0; i < height; i++)
       {
        buffer[i] = (unsigned int *)malloc(width * sizeof(unsigned int));
       }

    }

    ~BMP_array()
    {
        // TODO: free() each buffer
    }

    unsigned int ** data()
    {
        return buffer;
    }

private:
// TODO: Hide or implement copy constructor and operator=
unsigned int ** buffer
};

关于C++通过引用传递动态分配的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529875/

相关文章:

JavaScript DOM 引用不支持

c++ - 通过引用分配 vector

c++ - 使用 Magick++ 获取像素颜色?

c++ - 尝试递增 std::map 迭代器时出现 SIGBUS

java - 阿拉伯语到罗马语转换器: ArrayIndexOutOfBounds

java - 从 2 字节转换整数

c++ - 如何在MFC窗口中输出cv::Mat

c++ - 像打包一样获取聚合的大小

arrays - UIPageControl 未正确更新为 UIPageViewController 中当前页面的索引

java - 如何让一个对象从Java中的LinkedList中删除自己?