$\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"}));