DrRandom

Untitled

Nov 6th, 2024
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1.  
  2. class Hardware {
  3.   public:
  4.     std::string name;
  5. };
  6.  
  7. class HardwareHandler {
  8.   public:
  9.     Hardware* getHardwareByName(std::string name) {
  10.       for (auto &hardware : hardwares) {
  11.         if ( hardware.name == name ) {
  12.           return &hardware;
  13.         }
  14.       }
  15.       return nullptr;
  16.     }
  17.   private:
  18.     std::vector<Hardware> hardwares;
  19. };
  20.  
  21. inline HardwareHandler hwHandler;
  22.  
  23. class A {
  24.   public:
  25.     void init(){
  26.       myHardware = hwHandler.getHardwareByName("test");
  27.     }
  28.  
  29.     void doSomething(){
  30.       if( !myHardware ){ return; }
  31.       // Access myHardware...
  32.       printf("My hardware: %s\n", myHardware.name.c_str());
  33.     }
  34.  
  35.     void doSomethingWithHardware(){
  36.       myHardware = hwHandler.getHardwareByName("test");
  37.       if( !myHardware ){ return; }
  38.       // Access myHardware...
  39.       printf("My hardware: %s\n", myHardware.name.c_str());
  40.     }
  41.   private:
  42.     Hardware* myHardware = nullptr;
  43. };
  44.  
  45. inline A a;
  46.  
  47. // Példa 1.
  48. // Minden iterációban elkérjük a pointert ( teljesítményromlás )
  49. int main(){
  50.   while(true){
  51.     a.doSomethingWithHardware();
  52.   }
  53. }
  54.  
  55. // Példa 2.
  56. // Itt nem kell minden iterációban elkéri a pointert viszont
  57. // ha megváltozik a handler vektora akkor invalid lesz a pointer és nem nullptr
  58. int main(){
  59.   a.init();
  60.   while(true){
  61.     a.doSomething();
  62.   }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment