2013-11-02 2 views
0

Я пытаюсь написать питон обертку с закрытым исходным кодом C++ библиотеки, которая имеет интерфейс, как это:Динамический вызова статических «конструктора» в C++

class Image 
{ 
    public: 
    : 
    static Image ReadImage(const char *Filename); 
    : 
} 

Проблема заключается в том, что для питона связывания Мне нужен указатель на объект Image, а не на объект Image. Если метод был конструктор, я бы просто сделать:

Image img = new Image(); 

, но я застрял на том, существует ли соответствующий синтаксис для статического метода. Я попытался следующие, не работает (по крайней мере, не в г ++ 4.8):

image img = new Image::ReadImage("foo.bar"); 

Конечно, я могу работать вокруг этого путем создания класса-оболочки, но мне интересно, если это действительно необходимо?

+0

Я боюсь, что вы хотите метод класса питон ReadImage –

ответ

2

Вы, вероятно, нужно полагаться на копирования CTOR или въезду т е р:

Image* img = new Image(Image::ReadImage("foo.bar")); 
+0

(Если требуется динамический срок хранения, может быть, помещая его в карте или на стеке достаточно.) – dyp

+0

(Если требуется динамическая длительность хранения, используйте 'std :: unique_ptr', потому что в противном случае ваш код является исключением - небезопасным и недопустимым.) – rightfold

+0

Спасибо, Даниэль! К счастью, был рабочий конструктор, поэтому ваша конструкция работала. Я буду принимать это как ответ, хотя это не сработает, если не было конструктора копирования. –

Смежные вопросы