如何定义两个具有相同基类型的不同类型的C++构造函数

Sai*_*iku 3 c++ constructor

我有两个简单类型定义为int:

typedef int type_a;
typedef int type_b;
Run Code Online (Sandbox Code Playgroud)

我想为类中的每个类型创建一个构造函数.我尝试使用显式关键字,但它不起作用我得到一个编译消息"不能重载".

class Test {
public:
  explicit Test(type_a a){

  }
  explicit Test(type_b b){

  }
};
Run Code Online (Sandbox Code Playgroud)

将一种类型更改为无符号(typedef unsigned int type_b;)可以解决问题,但我确实希望保持两种类型的定义相同.

C++可以处理这种情况吗?

jua*_*nza 8

C++可以处理这种情况吗?

简答:不.typedefs是类型的别名.所以type_a并且type_b是相同的类型:int.这意味着您正在尝试这样做:

class Test {
public:
  explicit Test(int a) {}
  explicit Test(int b) {}
};
Run Code Online (Sandbox Code Playgroud)

由于不清楚为什么要这样,很难提出可行的解决方案.但是如果你要实现一个不同的整数类型,你可以为它设置一个单独的构造函数.

另请注意,explicit这与此无关.