次のコードを検討してください。
SmartPointer<Data> Fix(SmartPointer<Data> data)
{
return { /* Fixed Data */ };
}
SmartPointer<Data> Fix(SmartPointer<DataWrapper> dataWrapper)
{
return Fix(dataWrapper->Data());
}
「エラー C2668: オーバーロードされた関数へのあいまいな呼び出し」が発生しないように、これをどのように書き直しますか?
注: たとえば、サブクラスも渡してSmartPointer<SubclassOfDataWrapper>
、スーパークラスのオーバーロードされた関数に解決できるようにしたいと考えています。