Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <memory>
- #include <string>
- class Object {
- public:
- virtual std::string identity() = 0;
- virtual ~Object() = default;
- };
- class Mesh : public Object {
- public:
- std::string identity() override { return "Mesh"; }
- virtual ~Mesh() = default;
- };
- class Light : public Object {
- public:
- std::string identity() override { return "Light"; }
- virtual ~Light() = default;
- };
- template <typename T, typename... Args>
- std::shared_ptr<Object> createObject(Args &&...args) {
- return std::make_shared<T>(std::forward<Args>(args)...);
- }
- int main() {
- auto obj1 = createObject<Mesh>();
- auto obj2 = createObject<Light>();
- std::cout << obj1->identity() << ' ' << obj2->identity(); // Mesh Light
- }
Advertisement
Add Comment
Please, Sign In to add comment