Nanobind C++ передает тип Python в функцию C++ и использует его для приведенияC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Nanobind C++ передает тип Python в функцию C++ и использует его для приведения

Сообщение Anonymous »

Я создаю класс C++, который обрабатывает значения, передаваемые клиентом в формате JSON (преобразованные в словарь с помощью json.loads), я создаю класс Cpp с именем Параметр, и мне нужно передать тип конструктору, чтобы укажите необходимый приведение, но я не знаю, как использовать этот тип (в Python это похоже на return type_parameter(value))
ps. Мне также нужно преобразовать строковые значения в объект datetime, например «2024-10-10», и это причина использования параметра формата. Пожалуйста, дайте мне знать, как это сделать
`
Параметр класса {
private:
std::string name;
nb::object value;

Код: Выделить всё

[[nodiscard]] nb::object _get_value( const nb::dict& source, const bool& required, const nb::type_object& type_, const nb::object& default_, const std::string& format ) const {
if (required and !source.contains(name.c_str()))
throw std::domain_error("Parameter " + name + " is required");
return convert(source.contains(name.c_str()) ? source[name.c_str()] : default_, type_, format);
}

[[nodiscard]] static nb::object convert(const nb::object& value, const nb::type_object& type_, const std::string& format) {
if (value.is_none())
return value;
if (type_.is_none())
return value;
return value;
}
public:
Parameter( std::string name_, const nb::dict& source, const nb::type_object& type_, const bool& требуется = false, const nb::object& default_ = nb::none(), const std::string& format = "", const nb::object& check = nb::none() ) : name(std::move(name_)) {
value = get_value(источник, обязательный, тип, default_, формат);
if (!check.is_none())
check(value);

Код: Выделить всё

[[nodiscard]] nb::object getValue() const {
return value;
}
[[nodiscard]] std::string getName() const {
return name;
}
};
`
Я собираюсь передать этот параметр и использовать его для приведения значения, найденного в исходном коде. (поправьте меня за что-то кроме основного вопроса, я только сейчас изучаю, как работает привязка cpp)

Подробнее здесь: https://stackoverflow.com/questions/786 ... or-casting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»