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

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

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, и поэтому сделал то же самое для этого, но она не работает …. Я пытался удалить New, добавив cv :: и Googled безрезультатно … . Любая помощь приветствуется =)
^

0

Решение

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

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

Другие решения

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

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

По вопросам рекламы [email protected]