我有以下声明来区分它在我的代码中使用了不同的操作:
typedef unsigned int SOMEIDTYPE;
现在,当我创建两个重载函数时:
string something(const unsigned int &val){ ... itoa(val) ... }
string something(const SOMEIDTYPE &val){ ... IDTABLE[val] ... }
我收到错误消息:
error C2084: function 'std::string something(const unsigned int &)' already has a body
那么,我如何才能重载此函数以区别地使用这两种不同的数据类型,并执行如上所述的不同操作?
编辑:重载的原因是我正在模板函数内调用此函数。
最佳答案
typedef
仅创建昵称-不会创建新类型。
如果您真的想做这样的事情,那么您需要创建一个新的类型。您可以为此目的创建一个类,但是为了使该类表现得像int
,您需要做一些工作:
class SOMEIDTYPE
{
public:
SOMEIDTYPE();
SOMEIDTYPE(const int&);
SOMEIDTYPE& operator=(const SOMEIDTYPE&);
operator int() const;
private:
int val_;
};
现在您可以重载
SOMEIDTYPE