I've to do activities in my template based on type of class I get as parameter:
In Class.h
class SomeClass;
class SomeOtherClass;
class Class
{
public:
template <typename T> void function(T value);
};
In Class.cpp
template<typename T> void Class::function(T value)
{
// Whole lots of common code here
if (T == SomeClass)
{
// Do something by casting value to SomeClass
SomeClass* ptrSomeClassObj = (SomeClass*) &value;
ptrSomeClassObj->MemberFunctionOfSomeClass();
}
else
{
// Do something else
}
// Whole lots of common code here
}
Now I've these questions:
Here
if (T == SomeClass)
is not correct syntax. How shall I do this?Type casting of
T
the way I've done doesn't give me any syntax error. But is this appropriate to do like this? I believe C++ has better ways.
Update: Not really looking for Template specialization because it would replicate lots of common code (as mentioned in code above) in specialized functions.