Skip to content

Commit

Permalink
Add Interfaces in C++
Browse files Browse the repository at this point in the history
  • Loading branch information
Kassout committed May 5, 2023
1 parent 728d314 commit a3ac87d
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions HelloWorld/src/Main.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
#include <iostream>
#include <string>

class Entity
class Printable
{
public:
virtual std::string GetClassName() = 0;
};

class Entity : public Printable
{
public:
virtual std::string GetName() { return "Entity"; }
std::string GetClassName() override { return "Entity"; }
};

class Player : public Entity
Expand All @@ -14,20 +22,36 @@ class Player : public Entity
Player(const std::string& name) : m_Name(name) {}

std::string GetName() override { return m_Name; }
std::string GetClassName() override { return "Player"; }
};

void PrintName(Entity* entity)
{
std::cout << entity->GetName() << std::endl;
}

class A : public Printable
{
public:
std::string GetClassName() override { return "A"; }
};

void Print(Printable* obj)
{
std::cout << obj->GetClassName() << std::endl;
}

int main()
{
Entity* e = new Entity();
PrintName(e);
//PrintName(e);

Player* p = new Player("Cherno");
PrintName(p);
//PrintName(p);

Print(e);
Print(p);
Print(new A());

std::cin.get();
}

0 comments on commit a3ac87d

Please sign in to comment.