DrRandom

Untitled

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