Meg*_*ron 7 c++ boost boost-python
我有一个有两个函数的类,这两个函数都使用不同的参数集,并且这两个函数都有默认参数,如下所示:
void PlaySound(const std::string &soundName, int channel = 0, bool UseStoredPath = true);
void PlaySound(FMOD::Sound* sound, int channel = 0);
Run Code Online (Sandbox Code Playgroud)
我已经在这里找到了如何从教程中进行默认参数重载
http://www.boost.org/doc/libs/1_37_0/libs/python/doc/v2/overloads.html
以及如何在这里采取不同参数类型的函数重载
http://boost.2283326.n4.nabble.com/Boost-Python-def-and-member-function-overloads-td2659648.html
我最终做了这样的事......
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(PlaySoundFromFile, Engine::PlaySound, 1, 3)
BOOST_PYTHON_MODULE(EngineModule)
{
class_<Engine>("Engine")
//Sound
.def("PlaySound", static_cast< void(Engine::*)(std::string, int, bool)>(&Engine::PlaySound));
}
Run Code Online (Sandbox Code Playgroud)
问题是我真的不知道如何同时使用它们.我想避免更改我的基类函数定义.
以前做过这件事,或知道如何做到这一点的人可以帮助我吗?
提前致谢
Joh*_*nck 10
这对我有用:
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(
PlaySoundFromFile, Engine::PlaySound, 1, 3)
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(
PlaySoundFromFMOD, Engine::PlaySound, 1, 2)
BOOST_PYTHON_MODULE(EngineModule)
{
class_<Engine>("Engine")
.def("PlaySound", static_cast< void(Engine::*)
(const std::string&, int, bool)>
(&Engine::PlaySound), PlaySoundFromFile())
.def("PlaySound", static_cast< void(Engine::*)
(FMOD::Sound*, int)>
(&Engine::PlaySound), PlaySoundFromFMOD())
;
}
Run Code Online (Sandbox Code Playgroud)
诀窍是你需要告诉每个def()人使用一个重载说明符(这似乎是你所拥有的最大的缺失部分).
| 归档时间: |
|
| 查看次数: |
7970 次 |
| 最近记录: |