C ++ - ошибка: ожидаемый спецификатор типа при создании оболочки C для OpenCV cv :: Scalar :: all

0

Вот код, который я компилирую... Я создаю оболочку C для cv :: Scalar :: все, чтобы я мог обернуть другой язык...

CPP

 Scalar* cv_create_ScalarAll(double val)
{
    return new Scalar::all(val);
}

HPP

Scalar* cv_create_ScalarAll(double val);

скомпилировать с помощью g++ -Wall -shared -fPIC -o opencv-glue.so opencv-glue.cpp 'на Ubuntu Trusty Tahr

Я получаю эту ошибку

error: expected type-specifier
     return new Scalar::all(val);

Я просто написал аналогичную функцию, чтобы обернуть cv :: Scalar в C, и поэтому сделал то же самое для этого, но не работал. Я попытался удалить новое, добавив cv :: и googled, но безрезультатно.... Любая помощь оценивается =) ^

Теги:
opencv
scalar

2 ответа

0
Лучший ответ

Вы получаете эту ошибку, потому что Scalar::all не является типом (в отличие от Scalar). Просто удаление new не будет работать, потому что Scalar::all возвращает экземпляр Scalar с локальным хранилищем. Скорее всего, вы хотите:

Scalar* cv_create_ScalarAll(double val)
{
    return new Scalar(Scalar::all(val));
}
  • 0
    Спасибо SleuthEye, или я должен сказать, Шерлок Холмс? =) Вы взломали дело! Это отлично скомпилировано! ... Спасибо за подробное объяснение. Добрый день.
0

Новый оператор создает объект и выделяет его память, поэтому ему нужен тип нового объекта. В вашем коде вместо метода вводится вызов метода. Вы можете проверить этот метод в документации OpenCV, но похоже, что он возвращает скаляр, поэтому, если вы пишете только обертку для этого метода, вызов функции достаточно.

Scalar* cv_create_ScalarAll(double val)
{
    return Scalar::all(val);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню