Оператора перегрузка
От: Barbar1an Украина  
Дата: 10.03.19 14:14
Оценка:
template<class T> struct CObject
{
    CNexusObject *    Object = nullptr;

    CObject(){}
    CObject(CNexusObject * o) : Object(o)
    {
    }

    bool operator == (const CNexusObject * o) const 
    {
        return Object && Object == o;
    }

    T * operator->()
    {
        return dynamic_cast<T *>(Object);
    }

    operator T * () const
    {
        return dynamic_cast<T *>(Object);
    }
};

int main()
{
    CObject<CNexusObject> a;
    CNexusObject * b = nullptr;

            
    if(a == b)   // нужно чтобы вызывался мой оператор ==, вместо этого: error C2666: 'CObject<CNexusObject>::operator ==': 2 overloads have similar conversions
    {
    }
}



как разрулить?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.