Как проверить наличие объекта None в Boost Python - PullRequest
0 голосов
/ 16 мая 2018

У меня есть функция, которая ищет std::map из boost::python элементов объекта.Мне нужно найти конкретное значение ключа и вернуть соответствующий объект boost :: python, если объект существует на карте, в противном случае мне нужно вернуть объект None.Есть ли способ для кода вызывающей стороны определить, является ли возвращаемый объект из функции объектом None?Ниже приведен код для функции поиска:

namespace bpy = boost::pythono;
namespace fs = boost::filesystem;

std::map<fs::path, bpy::object> imported_modules;
bpy::object module_exists(fs::path path)
{
    auto it = imported_modules.find(path);
    if (it != imported_modules.end())
    {
        return it->second();
    }
    else
    {

        return bpy::object();// A None object
    }
}

Ниже показано, как вызывается функция:

bpy::object mod_cached = module_exists(filepath);

if (!mod_cached.is_none())
  { 
    cout << "Module Found" << endl;
  }

Однако при запуске программы появляется следующая ошибка:

TypeError: объект 'module' не вызывается

Есть предложения?

1 Ответ

0 голосов
/ 16 мая 2018

Изменение return it->second(); на return it->second; решило проблему.

...