C++ 在C+之间共享动态分配的数组+;源文件

C++ 在C+之间共享动态分配的数组+;源文件,c++,arrays,C++,Arrays,我试图用两个(实际上更多,但这并不重要)源代码编译一段代码。在其中一个示例中,我声明了一个可变大小数组,如下所示: const int number_of_equidistant = spike_location[number_of_spikes-1]; point_type* equidistant = NULL; equidistant = new point_type[number_of_equidistant]; extern const int number_of_equidista

我试图用两个(实际上更多,但这并不重要)源代码编译一段代码。在其中一个示例中,我声明了一个可变大小数组,如下所示:

const int number_of_equidistant = spike_location[number_of_spikes-1];
point_type* equidistant = NULL;
equidistant = new point_type[number_of_equidistant];
extern const int number_of_equidistant;
extern point_type equidistant[number_of_equidistant];
只要我只在声明它的同一个源文件中使用它,它就可以正常工作。但是,我也希望在其他地方访问它(此时只是打印出内容,以检查它是否执行了它应该执行的操作),这就是动态大小导致问题的原因(我尝试将大小声明为extern const int,但这不起作用)。是否有解决办法,或者这是一种特别愚蠢的方法,是否应该以不同的方式进行

具体的错误报告如下:

debug.cpp: In function ‘void debug_initialization()’:
debug.cpp:71:56: error: storage size of ‘equidistant’ isn’t constant
extern point_type equidistant[number_of_equidistant];
在debug.cpp中,数组和大小声明如下:

const int number_of_equidistant = spike_location[number_of_spikes-1];
point_type* equidistant = NULL;
equidistant = new point_type[number_of_equidistant];
extern const int number_of_equidistant;
extern point_type equidistant[number_of_equidistant];

我当然可以将其更改为列表(或堆或类似的东西),但我更希望能够通过它们的索引轻松访问数据。任何其他方法都超出了我的知识范围,因此我欢迎任何建议:)

当您使用new进行分配时,您总是在分配之后使用指针,您正在使用

extern point_type equidistant[number_of_equidistant];
你应该在哪里使用

extern point_type* equidistant;
a、 cpp:

#include <iostream>

extern const int number_of_equidistant;
extern double* equidistant;
extern void debuginit();

int main()
{
    debuginit();
    for(size_t ii=0; ii<number_of_equidistant; ii++) {
        std::cerr << ii << std::endl;
    }
}
#包括
等距的外部常数整数;
外双*等距;
extern void debuginit();
int main()
{
debuginit();

对于(size_t ii=0;ii您必须保持一致:

point_type* equidistant = NULL;
这说明
等距
是一个指针

extern point_type equidistant[number_of_equidistant];

这说明
等距
是一个数组。选择一个并坚持使用它。

这是一个全局变量,还是函数中的变量?为什么不使用像
std::vector
这样合理的集合呢?大卫:我可能会这样做。gnat:很抱歉,我在一个错误的组中发布了。到目前为止,我只使用了math.stackexchange。谢谢,这帮了大忙!
extern point_type equidistant[number_of_equidistant];