C ++ - 错误:为OpenCV的cv :: Scalar :: all创建C包装时期望的类型说明符

时间:2014-03-09 01:01:57

标签: c++ c opencv scalar

以下是我正在编译的代码......我正在为cv :: Scalar :: all创建一个C包装器,所以我可以用另一种语言包装......

CPP

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

HPP

Scalar* cv_create_ScalarAll(double val);

在Ubuntu Trusty Tahr上用'g ++ -Wall -shared -fPIC -o opencv-glue.so opencv-glue.cpp'编译

我收到此错误

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

我刚刚写了一个类似的函数来成功地将Cv :: Scalar包装在C中,所以为此做了同样但它不起作用....我已经尝试删除New添加一个cv ::并且Googled无济于事....任何帮助表示赞赏=)                 ^

2 个答案:

答案 0 :(得分:0)

new运算符创建一个对象并分配其内存,因此它需要新对象的类型。在您的代码中,提供了对方法的调用而不是类型。您可以在OpenCV文档中检查该方法,但看起来它返回一个标量 - 所以如果您只编写此方法的包装器,则对函数的调用就足够了。

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

答案 1 :(得分:0)

您收到此错误是因为Scalar::all不是类型(与Scalar不同)。只删除new将无效,因为Scalar::all会返回带有本地存储的标量实例。 最想要的是:

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