Я создаю библиотеку в 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 ++ ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение