Как перенести байтовый буфер от Python к C ++Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как перенести байтовый буфер от Python к C ++

Сообщение 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 = 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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