【Android】 Android Studioでデバイスが読み込まれない時
salmoncode
TechTopic
こんにちは!エンジニアのサーモンです。
前回はPythonからC++の関数を呼び出す方法について紹介しました。
今回は続きとして、PythonからC++のクラスを利用する方法について紹介します。
ぜひ最後まで読んでいってください!
まずはC++でクラスを定義します。
その後、クラスのバインドとメソッドのバインドを行います。
基本的に、関数をバインドするときと同様です。
1// C++
2
3// クラスの定義
4class Animal {
5 void Say() {
6 std::cout << "Hello!" << std::endl;
7 }
8};
9
10// バインド
11PYBIND11_MODULE(my_module, module) {
12 pybind11::class_<Animal>(module, "Animal") // クラスのバインド
13 .def(pybind11::init<>())
14 .def("Say", &Animal::Say); // メソッドのバインド
15}
Pythonからは、モジュール内のクラスとして利用することができます。
インスタンスを作成すると、バインドされたメソッドも呼び出すことができます。
1# Python
2import my_module
3
4# クラスの継承
5class Human(my_module.Animal):
6 # メソッドの定義...
7
8human = Human()
9# C++メソッドの呼び出し
10human.Say() # Hello!
この記事では、以下の内容について解説しました。
pybind11について書かれた書籍は見つかりませんでした。