Guest User

Untitled

a guest
Jul 31st, 2025
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3. #include <string>
  4.  
  5. class Object {
  6. public:
  7.   virtual std::string identity() = 0;
  8.   virtual ~Object() = default;
  9. };
  10.  
  11. class Mesh : public Object {
  12. public:
  13.   std::string identity() override { return "Mesh"; }
  14.  
  15.   virtual ~Mesh() = default;
  16. };
  17.  
  18. class Light : public Object {
  19. public:
  20.   std::string identity() override { return "Light"; }
  21.  
  22.   virtual ~Light() = default;
  23. };
  24.  
  25. template <typename T, typename... Args>
  26. std::shared_ptr<Object> createObject(Args &&...args) {
  27.   return std::make_shared<T>(std::forward<Args>(args)...);
  28. }
  29.  
  30. int main() {
  31.   auto obj1 = createObject<Mesh>();
  32.   auto obj2 = createObject<Light>();
  33.  
  34.   std::cout << obj1->identity() << ' ' << obj2->identity(); // Mesh Light
  35. }
Advertisement
Add Comment
Please, Sign In to add comment