N
none
I am trying to do the following (ASub and BSub are subclasses of A and B):
typedef A AType;
typedef B BType;
typedef ASub ASubType;
typedef BSub BSubType;
typedef SimpleBase<AType, BType> JobBaseType;
typedef Simple<ASubType, BSubType> JobSimpleType;
typedef std::vector<JobBaseType*> JobContainerType;
JobContainerType jobs;
// Works Fine!
JobBaseType * baseJob = new JobBaseType;
baseJob->name();
// ERROR!!
JobBaseType * simpleJob = new JobSimpleType;
simpleJob->name();
But the last initialization gives this error:
error: cannot convert ‘main()::JobSimpleType*’ to ‘main()::JobBaseType*’ in initialization
The problem is:
typedef Simple<ASubType, BSubType> JobSimpleType;
If I change this to:
typedef Simple<AType, BType> JobSimpleType;
it works.
Is there no way to create a pointer to a basetype<A,B> from a subtype<ASub, BSub> with subtype
template parameters, like:
JobBaseType * simpleJob = new JobSimpleType;
?
typedef A AType;
typedef B BType;
typedef ASub ASubType;
typedef BSub BSubType;
typedef SimpleBase<AType, BType> JobBaseType;
typedef Simple<ASubType, BSubType> JobSimpleType;
typedef std::vector<JobBaseType*> JobContainerType;
JobContainerType jobs;
// Works Fine!
JobBaseType * baseJob = new JobBaseType;
baseJob->name();
// ERROR!!
JobBaseType * simpleJob = new JobSimpleType;
simpleJob->name();
But the last initialization gives this error:
error: cannot convert ‘main()::JobSimpleType*’ to ‘main()::JobBaseType*’ in initialization
The problem is:
typedef Simple<ASubType, BSubType> JobSimpleType;
If I change this to:
typedef Simple<AType, BType> JobSimpleType;
it works.
Is there no way to create a pointer to a basetype<A,B> from a subtype<ASub, BSub> with subtype
template parameters, like:
JobBaseType * simpleJob = new JobSimpleType;
?