Any QuestObject is an independent game entity which contains information how the engine should react and affect your story. They are just a storages of data which can't exist without Controllers.
All data that describes a QuestObject is a combined congestion of tiny units of game and media events, like Sound, Picture, Music and even Story Trigger! They affect the game process every time QuestObject returns an information to its Controller.
QuestObject is highest abstract class which gives a life to other, more concrete and exact entities.
Children:
class QuestObject
{
private:
QuestDialogue dialogue;
bool triggeredFlag = false;
public:
virtual ~QuestObject() = 0;
void setDialogue();
QuestDialogue getDialogue();
};