【发布时间】:2015-01-19 10:13:46
【问题描述】:
我有两个简单的类型定义为 int:
typedef int type_a;
typedef int type_b;
我想为类中的每种类型创建一个构造函数。我尝试使用显式关键字,但它不起作用我收到一条编译消息“无法重载”。
class Test {
public:
explicit Test(type_a a){
}
explicit Test(type_b b){
}
};
将一种类型更改为无符号 (typedef unsigned int type_b;) 可以解决问题,但我真的希望保持两种类型的定义相同。
C++ 可以处理这种情况吗?
【问题讨论】:
-
typedefs 是类型的别名。所以type_a和type_b是同一类型:int。所以你不能做你想做的任何事情。 -
您可以将
ints 包装在两个单独的类中。也许如果type_a和type_b确实代表不同的类型,那么您也许可以为这些类型定义不同的接口。 -
你应该告诉我们为什么你想让
type_a和type_b都成为int。然后我们可以了解您要解决的问题(而不是您的解决方案),并建议对实际潜在问题的理智方法。 -
对您的要求一无所知:您可能想看看作用域枚举。
-
好吧,我简化了问题的问题,但我的类型定义为 uint32_t。一个是audio_id,另一个是video_id。该类表示使用这些属性“Type type; union { audio_id aid; video_id vid;};”定义的DataType。我需要 uint32_t 因为我正在将它写入文件并将其读取到文件中。
标签: c++ constructor