Рассмотрим следующий код:
SmartPointer<Data> Fix(SmartPointer<Data> data)
{
return { /* Fixed Data */ };
}
SmartPointer<Data> Fix(SmartPointer<DataWrapper> dataWrapper)
{
return Fix(dataWrapper->Data());
}
Как бы я переписал это, чтобы оно не вызывало "ошибку C2668: неоднозначный вызов перегруженной функции"?
Примечание: я хотел бычтобы можно было также передавать в подкласс, например, SmartPointer<SubclassOfDataWrapper>
, и иметь это разрешение для перегруженной функции суперкласса.