Я создаю библиотеку в C ++ с привязками Python. На пути к достижению этого я использовал пример ниже, сгенерированный Google Gemini в качестве стартера для этой части кода. Но я получаю ошибку: < /p>
Вот код C ++: < /p>
#include
struct MyStruct {
int value;
double* data;
int size;
// Constructor
MyStruct(int val, int sz) : value(val), size(sz) {
data = new double[sz];
for (int i = 0; i < sz; ++i) {
data = 0.0; // Initialize data to 0
}
}
// Destructor to free allocated memory
~MyStruct() {
delete[] data;
}
};
PYBIND11_MODULE(example, m) {
pybind11::class_(m, "MyStruct")
.def(pybind11::init())
.def_readwrite("value", &MyStruct::value)
.def_readwrite("data", &MyStruct::data)
.def_readwrite("size", &MyStruct::size);
}
< /code>
Вот код Python: < /p>
import example
my_struct = example.MyStruct(10, 5)
print(f"Value: {my_struct.value}")
print(f"Size: {my_struct.size}")
my_struct.value = 20
print(f"Modified Value: {my_struct.value}")
# Access and modify data through the pointer (be careful!)
for i in range(my_struct.size):
my_struct.data = i * 2.0
print("Data:", [my_struct.data for i in range(my_struct.size)])
< /code>
И это ошибка, которую я получаю: < /p>
Value: 10
Size: 5
Modified Value: 20
Traceback (most recent call last):
File "./test.py", line 13, in
my_struct.data = i * 2.0
~~~~~~~~~~~~~~^^^
TypeError: 'float' object does not support item assignment
< /code>
Итак, как исправить эту ошибку. И моя конечная цель - действительно перенести байтовый буфер от кода Python к C ++, если есть лучший способ сделать это, пожалуйста, дайте мне знать.
Подробнее здесь: https://stackoverflow.com/questions/795 ... ython-to-c
Как перенести байтовый буфер от Python к C ++ ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1745834771
Anonymous
Я создаю библиотеку в C ++ с привязками Python. На пути к достижению этого я использовал пример ниже, сгенерированный Google Gemini в качестве стартера для этой части кода. Но я получаю ошибку: < /p>
Вот код C ++: < /p>
#include
struct MyStruct {
int value;
double* data;
int size;
// Constructor
MyStruct(int val, int sz) : value(val), size(sz) {
data = new double[sz];
for (int i = 0; i < sz; ++i) {
data[i] = 0.0; // Initialize data to 0
}
}
// Destructor to free allocated memory
~MyStruct() {
delete[] data;
}
};
PYBIND11_MODULE(example, m) {
pybind11::class_(m, "MyStruct")
.def(pybind11::init())
.def_readwrite("value", &MyStruct::value)
.def_readwrite("data", &MyStruct::data)
.def_readwrite("size", &MyStruct::size);
}
< /code>
Вот код Python: < /p>
import example
my_struct = example.MyStruct(10, 5)
print(f"Value: {my_struct.value}")
print(f"Size: {my_struct.size}")
my_struct.value = 20
print(f"Modified Value: {my_struct.value}")
# Access and modify data through the pointer (be careful!)
for i in range(my_struct.size):
my_struct.data[i] = i * 2.0
print("Data:", [my_struct.data[i] for i in range(my_struct.size)])
< /code>
И это ошибка, которую я получаю: < /p>
Value: 10
Size: 5
Modified Value: 20
Traceback (most recent call last):
File "./test.py", line 13, in
my_struct.data[i] = i * 2.0
~~~~~~~~~~~~~~^^^
TypeError: 'float' object does not support item assignment
< /code>
Итак, как исправить эту ошибку. И моя конечная цель - действительно перенести байтовый буфер от кода Python к C ++, если есть лучший способ сделать это, пожалуйста, дайте мне знать.
Подробнее здесь: [url]https://stackoverflow.com/questions/79595462/how-to-pass-a-byte-buffer-from-python-to-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия