【发布时间】:2017-02-03 13:41:22
【问题描述】:
到目前为止,这段 C++ 代码对我有用:
Main.cpp:
unsigned __int16** image_data;
image_data = Grabber->get_image_data(1);
interface.cpp:
unsigned __int16** Grabber::get_image_data(int image_num) {
unsigned __int16 **pixel_values = 0;
pixel_values = new unsigned __int16*[height];
for (int h = 0; h < height; h++) {
pixel_values[h] = new unsigned __int16[width];
for (int w = 0; w < width; w++) {
pixel_values[h][w] = ...;
}
}
return pixel_values;
}
但现在我想将数组作为指向函数的指针传递。 我在下面的代码中尝试过,但它不再起作用了。
Main.cpp:
unsigned __int16** image_data;
Grabber->get_image_data(1, &image_data);
Interface.cpp:
int Grabber::get_image_data(int image_num, unsigned __int16*** image_data) {
*image_data = new unsigned __int16*[height];
for (int h = 0; h < height; h++) {
*image_data[h] = new unsigned __int16[width];
for (int w = 0; w < width; w++) {
*image_data[h][w] = ...;
}
}
return 0;
}
我的推理有什么错误吗?
【问题讨论】:
-
#define 对我不起作用,您遇到编译器错误?
-
抱歉,没有编译错误
-
我已经删除了这些点;如果它们包含重要代码,则应包含它们。如果没有,那没关系,您可以将它们排除在外。
-
你不应该这样存储图像数据;使用平面缓冲区(即
__int16*)并手动计算索引要容易得多,也更好。更好的是,使用std::vector<int16_t>,它使用标准 typedef 并自动管理其内存。 -
更好的解决方案是通过引用传递
标签: c++ arrays pointers multidimensional-array