1

次のコードを検討してください。

SmartPointer<Data> Fix(SmartPointer<Data> data)
{
    return { /* Fixed Data */ };
}
SmartPointer<Data> Fix(SmartPointer<DataWrapper> dataWrapper)
{
    return Fix(dataWrapper->Data());    
}

「エラー C2668: オーバーロードされた関数へのあいまいな呼び出し」が発生しないように、これをどのように書き直しますか?

注: たとえば、サブクラスも渡してSmartPointer<SubclassOfDataWrapper>、スーパークラスのオーバーロードされた関数に解決できるようにしたいと考えています。

4

2 に答える 2