Member 11612662 Ответов: 1

Как сделать интерфейс для std:: pair< & gt; без конструктора по умолчанию в swig и Python?


Всем привет,
Я собираюсь реализовать std:: pair< T, U>В swig& python.
T-это класс, и у него нет конструктора по умолчанию.
Когда я делаю wrapper.cxx через swig, он имеет ошибку компиляции, которая
error C2512: 'T' : no appropriate default constructor available

Это происходит потому, что при создании переменной std:: pair она вызывает конструкторы T и U.

Как я могу это исправить?

Что я уже пробовал:

Я попытался добавить код следующим образом:

%feature("valuewrapper") std::pair<T, U>;
%ignore std::pair<T, U>::pair();

Но это не имеет никакого эффекта.

1 Ответов

Рейтинг:
0

Jochen Arndt

Я не знаю глоток но вы получили ошибку компилятора C++.

T и U это параметры шаблона, которые должны быть заменены существующими типами классов.
Примеры C++ :

std::pair <int, int> p1;
std::pair <int, std::string> p2;
Смотреть также пара:пара - Справочник по c++ [^].

Таким образом, вы должны использовать его соответственно в зависимости от типов, используемых с std::pair (угаданный):
%feature("valuewrapper") std::pair <int, int>;
%ignore std::pair<int, int>::pair();

%feature("valuewrapper") std::pair <int, std::string>;
%ignore std::pair<int, std::string>::pair();


Member 11612662

Я попробовал.
std:: pair< MyClass1, MyStruct1>;
Но это не имеет никакого эффекта.

Jochen Arndt

Сожалеть об этом. Я еще не употреблял глоток и больше ничем помочь не могу.

Но ошибка компилятора исчезла?

Member 11612662

Спасибо за Ваши советы. Но ошибки все равно существуют.