4

可能重复:
使用 typedef 别名作为参数重载成员方法

我有以下方法 void setField(char x);和另一个重载方法这在所有平台上void setField(int8_t x); 编译,除了solarissolaris int8_ttypedef as char

有什么办法可以解决这个问题,因为我不想更改method 我得到编译器错误的名称说method already exists

4

2 回答 2

2

没有办法解决这个问题。typedef 只是同一类型的另一个名称。但是你只能重载不同的类型。所以在你的情况下 - 编译器会看到 setField(char x)。

为什么需要这两种方法?由于 sizeof(char) 根据标准为 1,因此这些名称之间实际上没有区别。

于 2012-05-15T06:29:45.477 回答
0

我不认识 int_8。stdint.h 有 int8_t。你试过吗?否则,在 Solaris 上找到定义 int_8 的头文件,并在 Solaris 构建中使用适当的预处理器定义有条件地排除它。

于 2012-05-15T06:22:42.610 回答