什么是
operator size_t () const
环境:Visual Studio 2010 Professional
TL; 博士
今天我正在寻找一种使用std::tr1::unordered_set
. 因为上次问了怎么用,所以决定自己去查一下。std::map
我用谷歌搜索,大部分结果告诉我有一个结构来做散列。这条路对我来说看起来有点复杂,我一直在寻找,终于找到了另一种方法。
我需要实施
bool operator == (const edge & another) const
和
operator size_t () const
生成的代码接近问题的结尾。
==
熟悉没有任何问题。size_t
也很熟悉。但什么是operator size_t
?
似乎equals
和hashCode
Java 一样,需要根据 Effective Java 一起重写。但我不确定,尤其是当名字是size_t
.
结果代码如下。完整的程序运行良好,并产生正确的输出。
class edge {
public:
int x;
int y;
edge(int _x, int _y) : x(_x), y(_y) {
}
bool operator == (const edge & another) const {
return (x == another.x && y == another.y);
}
operator size_t () const {
return x * 31 + y;
}
};
多一点点:
不是
size_t operator () const
无法编译:
error C2143: syntax error : missing ';' before 'const'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2059: syntax error : '{'
error C2334: unexpected token(s) preceding '{'; skipping apparent function body
即使没有
int operator size_t () const
但正如我所见,函数返回int
. 错误代码如下:
error C2549: user-defined conversion cannot specify a return type