У меня есть класс, который выглядит следующим образом:
class Base
{
public:
Base( int val = 0 ) : value( val ) {};
int value;
};
Классы A
и B
наследуют Base
:
class A : public Base {};
class B : public Base {};
У меня также есть шаблонный класс сподпись, похожая на:
template < class T >
class Temp
{
public:
Temp ( const T & val = T() ) : m_T( val ) {};
T m_T;
};
Я пытаюсь создать функцию, которая берет указатели на Temp<Base>
экземпляров и действует на них:
void doSomething ( Temp< Base > * a, Temp< Base > * b )
{
(*a) = (*b);
};
В конечном счете, я быхотел бы, чтобы Temp<A>
и Temp<B>
экземпляры передавались в doSomething()
, например:
void
main()
{
Temp<A> a;
Temp<B> b;
doSomething( &a, &b) ;
};
Очевидно, это не будет работать, потому что Temp<A>
и Temp<B>
не связаны и не существует неявногопреобразование между типами (даже если A
и B
равны Base
).
Как можно решить эту проблему?Будем благодарны за любые комментарии.
Заранее благодарим за помощь.