#include <iostream>
using namespace std;
class BaseClass
{
public:
virtual std::string ClassName()
{
return "BaseClass";
}
};
class DerivedClass : public BaseClass
{
public:
std::string ClassName() override
{
return "DerivedClass";
}
};
template<class cT>
std::string StatusPrint ( cT object, const std::string& message)
{
return object.ClassName(); // Here's where my issue arises.
}
int main() {
DerivedClass test;
cout<< StatusPrint(test, "test"s)<<endl;
//cout<< StatusPrint<DerivedClass>("test"s)<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZUNsYXNzCnsKcHVibGljOgogIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ2xhc3NOYW1lKCkKICB7CiAgICByZXR1cm4gIkJhc2VDbGFzcyI7CiAgfQp9OwoKY2xhc3MgRGVyaXZlZENsYXNzIDogcHVibGljIEJhc2VDbGFzcwp7CnB1YmxpYzoKICBzdGQ6OnN0cmluZyBDbGFzc05hbWUoKSBvdmVycmlkZQogIHsKICAgICByZXR1cm4gIkRlcml2ZWRDbGFzcyI7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgY1Q+CnN0ZDo6c3RyaW5nIFN0YXR1c1ByaW50ICggY1Qgb2JqZWN0LCBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkKewogIHJldHVybiBvYmplY3QuQ2xhc3NOYW1lKCk7IC8vIEhlcmUncyB3aGVyZSBteSBpc3N1ZSBhcmlzZXMuCn0KCmludCBtYWluKCkgewoJRGVyaXZlZENsYXNzIHRlc3Q7IAoJY291dDw8IFN0YXR1c1ByaW50KHRlc3QsICJ0ZXN0InMpPDxlbmRsOwoJLy9jb3V0PDwgU3RhdHVzUHJpbnQ8RGVyaXZlZENsYXNzPigidGVzdCJzKTw8ZW5kbDsKCXJldHVybiAwOwp9