$\require{cancel}$
final
directive means you can't derived any further.
// in HumanT.cpp string SingingCardUserT::Greet() const { return "Hello, I am a SingingCardUserT named " + SingerT::name + " but I am also named " + CardUserT::name +"." ; ... // in HumanTest.cpp humans.push_back(new CardUserT{"Ed"}); humans.push_back(static_cast(new SingingCardUserT{"Fran"}));