У меня есть два объекта C ++
int queueIndex
Timer timer_obj
и вот определение класса таймера
class Timer
{
private:
struct timeval tStart; /**< @brief Stores the system time when the timer is started */
struct timeval tFinish; /**< @brief Stores the system time when the timer is stopped */
protected:
float getElapsedTime(struct timeval, struct timeval);
public:
Timer();
string currentTime();
float currentElapsedTime();
void restart();
float stop();
int high_pres_usleep_untill(unsigned long long int);
string getStringStartTimer();
void setStartTimerFromString(string);
void sleep(long int);
unsigned long long int get_clock();
Мне нужно преобразовать эти два объекта в PyObj *. Я использовал для этого boost :: python. Теперь я хочу сделать это без boost или swig.
Я успешно конвертировал Индекс, но я ничего не понял с помощью timer_obj
PyObject* pyo=PyInt_FromLong(queueIndex)
Я был бы благодарен, если бы кто-то мог помочь мне с этим. Мне просто нужен пример, который вам не нужен, чтобы дать мне полный код. Кроме того, функции, определенные в классе, немного сложны, поэтому я не давал их здесь. преобразовать timer_obj и затем назначить новую ссылку, или мне нужно получить новую ссылку для всех структур и функций в классе и создать новый класс с этими ссылками?
Что вам нужно сделать, это создать тип расширения. К сожалению, этот процесс относительно сложен и займет несколько сотен строк кода. Вот и весь питон boost :: python и SWIG, чтобы удалить весь шаблон.
Как сказал Натан, тип расширения относительно задействован. Вы хотели бы изучить Cython для этого, так как синтаксис проще, и он заботится о генерации шаблонного кода внутри. http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html
Вы также можете взглянуть на пример, опубликованный Никласом в https://stackoverflow.com/a/8933819/2156678