我有以下声明来区分它在我的代码中使用了不同的操作:

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

09-09 23:52