Есть код (пишу на C++Buildep 5): Worksheet->Get_Range("A1", "B2")->set_Value(int(2));
Он вызывает такой код (лежащий в UTILCLS.H — COM/ActiveX Utility Classes):
TVariantT& operator =(const TBaseVariantT<T>& rhs)
{
if (&rhs != this)
{
::VariantClear(this);
::VariantCopy(this, &(const_cast<TVariantT&>(rhs))); (здесь стопорится)
}
return *this;
}
с ошибкой Cannot cast from ... to ...
Вопрос: почему вызывается именно этот вариант перегруженного оператора, если ДАЛЬШЕ написано
TVariantT& operator =(int src)
{
::VariantClear(this);
SET_VTYPE_AND_VAR(I4, src);
return *this;
}
Комментирую первый вариант перегрузки — ВСЕ компиляется. Почему не вызывается тот перегруженный оператор, который действительно соответствует типу параметра?!
Исправлена подсветка синтаксиса. -- ПК.