我有两个简单类型定义为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++可以处理这种情况吗?
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这与此无关.