Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用c+中的静态变量在不同类之间共享数组+;?_C++_Arrays_Class_Static - Fatal编程技术网

C++ 如何使用c+中的静态变量在不同类之间共享数组+;?

C++ 如何使用c+中的静态变量在不同类之间共享数组+;?,c++,arrays,class,static,C++,Arrays,Class,Static,如何使用静态变量维护用于存储数据的共享数组?应该为数组中的每个类保留区域。我们应该能够从所有类访问数组来存储和检索数据。听起来您要求的是一个全局变量——正如注释中提到的,这通常是一个坏主意,因为当每个类都具有对相同共享数据的读写访问权限时,对程序的行为进行推理变得越来越困难(因为很难跟踪代码库的哪些部分可能正在修改或取决于共享数据,或者不同部分在访问数据时如何相互作用) 这就是说,如果你真的想这样做(并且它可以适用于非常小/简单的程序,如果只是因为几乎任何方法都可以适用于非常小/简单的程序),你

如何使用静态变量维护用于存储数据的共享数组?应该为数组中的每个类保留区域。我们应该能够从所有类访问数组来存储和检索数据。

听起来您要求的是一个全局变量——正如注释中提到的,这通常是一个坏主意,因为当每个类都具有对相同共享数据的读写访问权限时,对程序的行为进行推理变得越来越困难(因为很难跟踪代码库的哪些部分可能正在修改或取决于共享数据,或者不同部分在访问数据时如何相互作用)

这就是说,如果你真的想这样做(并且它可以适用于非常小/简单的程序,如果只是因为几乎任何方法都可以适用于非常小/简单的程序),你可以这样做:

// in my_shared_data.h (or some other header file than anyone can #include)
struct MyGloballySharedData
{
   int myArray[100];
   char myString[100];
   // ... and whatever the data you care to add here
};

// tell all the #include-ers that (mySharedDataObject) exists, somewhere
extern MyGloballySharedData mySharedDataObject;  


请注意,您不希望将mySharedDataObject声明为静态,因为这将使其仅可供位于mySharedDataObject全局存储所在的.cpp文件中的代码访问,这将使其无法全局使用。

您最好不要这样做。这是类紧密耦合的一个症状。如果要为使用数组的每个类保留区域,为什么不让每个类都有自己的数组?为什么不能在每个类中都有一个单独的私有数组?它的设计比为每个类保留区域的共享阵列更好
// in my_shared_data.cpp (or some other .cpp file, it doesn't matter which one)
MyGloballySharedData mySharedDataObject;