Преобразование типов c++
Имеется следующий класс:
class C final {
public:
//Публичные функции, геттеры и сеттеры
private:
uint8_t a;
uint8_t b;
};
Его необходимо преобразовать в тип std::pair<uint8_t, uint8_t>. Можно написать функцию-конвертер:
#include <utility>
std::pair<uint8_t, uint8_t> convertToPair(const C& obj) {
return {obj.getA(), obj.getB()}; // Создаем пару на основе значений структуры
}
Но есть ли более элегантный способ каста?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Такое устроит?
class C final {
public:
C(uint8_t a, uint8_t b):a(a),b(b){}
operator std::pair<uint8_t, uint8_t>()
{
return std::make_pair(a,b);
}
private:
uint8_t a;
uint8_t b;
};
int main(int argc, char * argv[])
{
C c(5,7);
pair<uint8_t, uint8_t> d = c;
cout << int(d.first) << " " << int(d.second) << endl;
cout << static_cast<pair<uint8_t, uint8_t>>(c).first << " " <<
static_cast<pair<uint8_t, uint8_t>>(c).second << endl;
}