嗨,我正在尝试实现std :: hash struct的特征类,但我无法从这里进步:
#include <iostream>
#include <functional>
namespace std {
template<>
struct hash< Test::AckMsgType<Test::EACKMSGTYPE::ACKMSG_POST> >
{
typedef std::size_t value_type;
typedef Test::AckMsgType<Test::EACKMSGTYPE::ACKMSG_POST> AckMsg;
value_type operator()(const AckMsg & aAckMsg) const
{
value_type const h1 ( std::hash<int>()(aAckMsg.getProxyID()) );
value_type const h2 ( std::hash<int>()(aAckMsg.getCmdID()) );
value_type const h3 ( std::hash<int>()(aAckMsg.getHdrMsgId()) );
return (h1 ^ (h2 << 1)) ^ (h3 << 1) ;
}
};
}
namespace Test {
enum class EACKMSGTYPE
{
ACKMSG_POST,
ACKMSG_RELEASE
};
//definicion de los traits
template<EACKMSGTYPE>
class AckMsgType
{};
template<>
class AckMsgType<EACKMSGTYPE::ACKMSG_POST>
{
public:
explicit AckMsgType(const int & aID):ID(aID)
{
}
void setCmdId(const int & aCmdId)
{
CmdID =aCmdId;
}
void setMsgHeaderId(const int & aHeaderId)
{
HdrMsgId=aHeaderId;
}
void buildAckIdentifier()
{
}
int getProxyID()
{
return (ID);
}
int getCmdID() const
{
return CmdID;
}
int getHdrMsgId() const
{
return HdrMsgId;
}
private:
const int ID;
int CmdID;
int HdrMsgId;
int AckMsgId;
};
}
int main()
{
return 0;
}
答案 0 :(得分:2)
看起来更像是编码std :: hash的特化。为此,您可能需要在进行专门化之前定义类...