Код: Выделить всё
enum Enum_Foo {
Foo_A.
Foo_B,
Foo_C
};
enum Enum_Bar {
Bar_A.
Bar_B,
Bar_C
};
class Creator
{
public:
Creator();
Creator(Enum_Foo);
Creator(Enum_Bar);
};
< /code>
SWIG жалуется на перегруженные методы, и это нормально. Рекомендация заключается в том, чтобы использовать %rename Код: Выделить всё
Python.iКод: Выделить всё
%rename (CreatorFromBar) Creator::Creator(Enum_Bar);
< /code>
Результат Python-это функция (немного переработана из оригинала): < /p>
def CreatorFromBar(in_enum_bar):
val = _SomeNamespacePython.new_CreatorFromBar(in_enum_bar)
return val
< /code>
, который может быть использован в конечном коде Python как: < /p>
bar = Enum_Bar.Bar_A
creator = CreatorFromBar(bar)
< /code>
Но PHP - это другой случай: < /p>
PHP.iКод: Выделить всё
%rename (CreateFromBar) Creator::Creator(Enum_Bar);
< /code>
Результат PHP-это метод класса (немного переработана из оригинала): < /p>
class Creator {
...
function CreateFromBar($in_enum_bar_type) {
...
return new Creator(new_CreateFromBar($in_enum_bar_type));
}
...
}
Код: Выделить всё
$enum_bar = Enum_Bar::Bar_A;
$dummy = new Creator();
$correct = $dummy->CreatorFromBar($enum_bar);
Код: Выделить всё
$enum_bar = Enum_Bar::Bar_A;
$correct = Creator::CreatorFromBar($enum_bar);
Есть ли способ заставить Static перед результатом SWIG функции PHP?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... a-function
Мобильная версия