Я получаю ошибку об операторе возврата (или приведении) в конечной функции в следующем фрагменте из заголовка библиотеки
///////////////////////////////////////////////////////////
// class __HashMapDefaultProviderT
/**
* @internal
* @class __HashMapDefaultProviderT
* @brief This is an implementation of the IHashCodeProviderT interface for the HashMap class.
* @since 1.0
*/
template<class KeyType>
class __HashMapDefaultProviderT
: public IHashCodeProviderT<KeyType>,
public Object
{
public:
// Lifecycle
/**
* This is the default constructor for this class.
*
* @since 1.0
*/
__HashMapDefaultProviderT(void) {}
/**
* This is the destructor for this class.
*
* @since 1.0
*/
virtual ~__HashMapDefaultProviderT(void) {}
// Operation
/**
* Gets the hash code of the specified object
*
* @since 1.0
* @return The hash code of the specified object
* @see Osp::Base::Object::GetHashCode
*/
int GetHashCode(const KeyType& obj) const
{
return (int)obj;
}
};
ошибка:
недопустимое приведение типа 'const myClass' к типу 'int'
Что это за исправление? Заголовочный файл называется FBaseColHashMapT.h
Я уже добавил operator>
и operator<
методы, но я не знаю, как еще получить свой класс для хеширования или как разрешить приведение, которое требуется выше, если не считать его наследование, но я бы хотелось бы узнать, смогу ли я этого избежать. Для поддержки этих двух операторов я написал:
inline int GetHashCode() const {return myIntMember/4 + clientRect.GetHashCode();}
Может быть, это может быть повторного использования здесь?
Я предоставляю myClass
в качестве ключа для этого класса шаблона и int
в качестве значения.