[英]Multiple accesses of a singleton object in many classes
我有一個結構,多個類可以訪問和編輯。 所以我在 class 中創建了這個結構的 object 作為 static 並創建了一個 get 方法。 在 Class1.cpp 中:
#include "Class1.h"
static MyStruct struct;
MyStruct* Class1::get_my_struct()
{
return &struct;
}
我想創建這個類的 object 作為 singleton 以保證這個結構可以通過單個 object 訪問。
在 Class2.cpp 中:
#include "Class2.h" //Class1.h file included in this file.
void Class2::log_value()
{
Class1& singleton_obj_cls1 = Class1::getObject(): //return singleton object
singleton_obj_cls1 .get_my_struct().tempr_val=log_temp_val(); //log this value of struct by class 2 method
}
void Class2::change_value()
{
Class1& singleton_obj_cls1 = Class1::getObject():
//Do I have to get the singleton object for different methods even though they are in the same class?
//Can a singleton object get in one place in class and the whole class use it as a class member?
singleton_obj_cls1 .get_my_struct().tempr_val=45;
singleton_obj_cls1 .get_my_struct().x_val=66 ;
}
我有 class 3 class 使用 class1 和 class 2.順便說一句,我將 class2`constructor 更改為 Z277500A3552963
在 Class3.cpp 中:
#include "Class3.h" //Both Class1.h and Class2.h file included in this file.
void Class3::calculate_value()
{
Class1& singleton_obj_cls1 = Class1::getObject():
Class2& singleton_obj_cls2 = Class2::getObject():
singleton_obj_cls2.log_value();
singleton_obj_cls1.get_my_struct().pressure_value=300;
}
我的第三個問題是,是否有更好的設計方法可以修復,而不是在使用每個結構之前在多個位置獲取 singleton 對象,或者我應該在頂部 ZA2F2ED4F8EBC2CBB4C21A209DC40AB601D 方法中創建一次 object 並將其作為參數應該有權訪問此結構的不同類?
- 我是否必須為不同的方法獲得 singleton object,即使它們在同一個 class 中?
- Can a singleton object get in one place in class and the whole class use it as a class member?
在 header 文件中使用成員變量,並在構造函數成員初始化程序列表中對其進行初始化:
示例Class2.h
#include "Class1.h"
class Class2 {
//...
private: // maybe public/protected to access from other classes
Class1& m_singleton_obj_cls1;
};
示例Class2.cpp
#include "Class2.h"
Class2::Class2()
: m_singleton_obj_cls1(Class1::getObject()) {
}
//...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.