template <class Type1, class Type2> class wqHashTable
{
Type2 INVALID_ELEMENT;
public:
bool last_access_valid;
template <class Type1, class Type2>
Type2& wqHashTable<Type1, Type2>::operator[](int idx) const
{
last_access_valid = goodId(idx);
if (last_access_valid )
return m_pValue[idx];
else
return INVALID_ELEMENT;
}
}
Для этого требуется Type2
для создания по умолчанию, что не является гарантией, которую вы всегда будете иметь, но довольно распространено.Вызывающий может проверить значение last_access_valid
.
. Если вы собираетесь использовать такую вещь, как last_access_valid
, я настоятельно рекомендую класс, подобный тому, который я разместил на https://stackoverflow.com/a/8088357/845092, чтобы гарантироватьУтверждение, что это проверяется каждый раз, поэтому вы не можете случайно забыть.В этом случае тип last_access_valid
будет ForceCheckError<bool>
, а если вызывающий не проверит его, он будет assert
.