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

How to share a array between different classes using static variable in c++?

本文关键字:共享 数组 之间 静态 c++ 变量      更新时间:2023-10-16

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

这听起来像你要求的是一个全局变量,正如在评论中提到的,通常是一个坏主意,因为每个类都有读和写访问相同的共享数据,这对程序的行为变得越来越难的原因(因为它就很难跟踪代码的哪些部分可能会修改或根据共享数据,或不同部分如何相互作用当访问)。

也就是说,如果你真的想这样做(它可以很好地工作在非常小/简单的程序,如果只是因为几乎任何方法都可以很好地工作在非常小/简单的程序),你可以这样做:

// 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;  

// in my_shared_data.cpp (or some other .cpp file, it doesn't matter which one)
MyGloballySharedData mySharedDataObject;

请注意,不要将mySharedDataObject声明为静态,因为这将使它只能被位于mySharedDataObject全局存储所在的.cpp文件中的代码访问,这将使它不可全局使用。