如何在 C++ 中使用静态变量在不同的类之间共享一个数组?
Posted
技术标签:
【中文标题】如何在 C++ 中使用静态变量在不同的类之间共享一个数组?【英文标题】:How to share a array between different classes using static variable in c++? 【发布时间】:2015-09-09 15:22:04 【问题描述】:我们如何维护一个共享数组来使用静态变量存储数据?应该为阵列中的每个类保留区域。我们应该能够从所有类中访问数组来存储和检索数据。
【问题讨论】:
最好不要。这是类耦合过紧的症状。 如果你想为每个使用数组的类保留区域,为什么不让每个类都有自己的数组呢? 为什么不能在每个类中都有一个单独的私有数组?它比为每个类保留区域的共享数组更好的设计 【参考方案1】:听起来你要求的是一个全局变量——正如 cmets 中提到的那样,这通常是一个坏主意,因为当每个类都对相同的共享数据具有读写访问权限时,它变得越来越困难推理程序的行为(因为很难跟踪代码库的哪些部分可能正在修改或取决于共享数据,或者在访问它时不同部分将如何相互交互)。
也就是说,如果你真的想这样做(它可以适用于非常小的/简单的程序,只要因为几乎任何方法都可以适用于非常小的/简单的程序),你可以这样做像这样:
// 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 文件中的代码,这将使其不是全局的- 可用。
【讨论】:
以上是关于如何在 C++ 中使用静态变量在不同的类之间共享一个数组?的主要内容,如果未能解决你的问题,请参考以下文章