У меня есть класс Format, который необходимо скомпилировать для 32- и 64-разрядных платформ Linux.
В классе есть методы для добавления примитивных значений, а затем форматирования значений в соответствии со строкой форматирования. Более или менее инкапсуляция printf(...)
Мой класс выглядит так:
class Format
{
public:
Format(string fmt);
add(int16_t x);
add(int32_t x);
add(int64_t x);
add(time_t x);
}
Когда я компилирую для 32-битного кода, код компилируется, потому что int64_t и time_t переводятся в разные типы.
Если я скомпилирую для 64 бит, я получу:
ошибка: «Format :: add (time_t)» не может быть перегружен
Если я удаляю add(time_t x)
Я получаю ошибку компиляции из 32-битного компилятора:
ошибка: вызов перегруженного ‘add (time_t &)’ неоднозначен
Я понимаю причины, по которым компиляция не удалась.
Но я не вижу лучшего решения этой проблемы?
Я бы не хотел приводить time_t к int64_t у вызывающей стороны.
Так как я могу реализовать это наилучшим образом для поддержки нескольких платформ?
У меня похожая проблема при добавлении версий перегрузки "long" и "int" в add (...).
С уважением
Клаус