N
nyl2002
I have written the following very short template class in testclass.h:
template<typename C,typename T>
class TestClass {
public:
TestClass() {};
~TestClass();
private:
T testFunction(T dummy);
};
template<typename C,typename T>
T TestClass<C,T>::testFunction(T dummy)
{
C bla;
return dummy;
}
So far it compilates fine.
Now i want to overload the testFunction:
template<typename C,typename T>
class TestClass {
public:
TestClass() {};
~TestClass();
private:
T testFunction(T dummy);
/* definition of overloaded function */
double testFunction(double dummy);
};
template<typename C,typename T>
T TestClass<C,T>::testFunction(T dummy)
{
C bla;
return dummy;
}
/* now comes the problematic part */
template<typename C>
double TestClass<C,double>::testFunction(double dummy)
{
C bla;
return dummy;
}
I get the following compiler error:
behavior/testclass.h:47: error: no `double TestClass<C,
double>::testFunction(double)' member function declared in class `
TestClass<C, double>'
behavior/testclass.h:47: error: template definition of non-template
`double
TestClass<C, double>::testFunction(double)'
If I remove the parameter C everything works fine of course.
Please can anybody help me.
I think its probably just a small problem.
template<typename C,typename T>
class TestClass {
public:
TestClass() {};
~TestClass();
private:
T testFunction(T dummy);
};
template<typename C,typename T>
T TestClass<C,T>::testFunction(T dummy)
{
C bla;
return dummy;
}
So far it compilates fine.
Now i want to overload the testFunction:
template<typename C,typename T>
class TestClass {
public:
TestClass() {};
~TestClass();
private:
T testFunction(T dummy);
/* definition of overloaded function */
double testFunction(double dummy);
};
template<typename C,typename T>
T TestClass<C,T>::testFunction(T dummy)
{
C bla;
return dummy;
}
/* now comes the problematic part */
template<typename C>
double TestClass<C,double>::testFunction(double dummy)
{
C bla;
return dummy;
}
I get the following compiler error:
behavior/testclass.h:47: error: no `double TestClass<C,
double>::testFunction(double)' member function declared in class `
TestClass<C, double>'
behavior/testclass.h:47: error: template definition of non-template
`double
TestClass<C, double>::testFunction(double)'
If I remove the parameter C everything works fine of course.
Please can anybody help me.
I think its probably just a small problem.