Re: cannot instantiate abstract class
PaulH wrote:
I have a c++ applicaiton (as below) and I'm getting a linker error
that has me stumped. error C2259: 'myspace::PolicyImpl<T>': cannot
instantiate abstrace class.
If it's obvious to anybody what I'm doing wrong, please let me know.
template < typename T >
class Policy
{
public:
virtual void RemoveAll( ClassA< T, myspace::Policy > *p ) = 0;
virtual void Add( ClassB< T, myspace::Policy > *p ) = 0;
virtual void Remove( ClassB< T, myspace::Policy > *p ) = 0;
};
template < typename T >
class PolicyImpl : public Policy< T >
{
public:
PolicyImpl(){};
void RemoveAll( ClassA< T, myspace::PolicyImpl > *p )
{
//...
}
void Add( ClassB< T, myspace::PolicyImpl > *p )
{
//...
}
void Remove( ClassB< T, myspace::PolicyImpl > *p )
{
//...
}
private:
//...
};
So, you hoped to override some virtual members, right? To be the
final overrider, the function has to have the *same signature*, right?
Now, look at the signatures of those functions. Do you notice any
difference, even a very slight one?
When you don't provide a non-pure final overrider to a pure virtual
function, the class is still abstract.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask