проблема приведения типов к шаблонному классу в C ++ - PullRequest
0 голосов
/ 24 мая 2011

Я не эксперт по прибору шаблонов или типов, поэтому мне действительно нужна помощь.Я должен использовать существующий класс шаблона и столкнуться со следующей проблемой приведения типов.Я поместил пример кода, чтобы проиллюстрировать проблему.

//template class definition
template <class IntType>
class CUSTOMIZE_Int: public CUSTOMIZE_Type
{
 public:
     operator const IntType() const;  
 private:
     IntType m_int;
}

template<class IntType>
CUSTOMIZE_Int<IntType>::operator const IntType() const
{
   return m_int;  
}

// the template class instantiation
typedef CUSTOMIZE_Int<WRAPPER_Int32> CUSTOMIZE_UnsignedInt;

Затем в своем коде я извлекаю новый класс

// the derived class definition
class IntNum: public CUSTOMIZE_UnsignedInt
{
    // ctors and new methods;
}

, создаю переменную и пытаюсь выполнить преобразование для получения данных.

class IntNum& i;
const WRAPPER_Int32 j = i;

со следующей ошибкой компиляции:

error: cannot convert "IntNum" to "const WRAPPER_Int32" in initialization.

Как правильно выполнить преобразование или какова проблема с моим кодом?
Спасибо за любые комментарии!

1 Ответ

0 голосов
/ 24 мая 2011

Полагаю, вы ожидаете оператора IntType ()

class ...
    operator const IntType() const;  
}

действовать здесь, когда вы назначаете i для j:

const WRAPPER_Int32 j = i;

Однако, это не неявное преобразование, вы должны сделать это явно:

const WRAPPER_Int32 j = (WRAPPER_Int32) i;

Надеюсь, это поможет.

...