以下是我正在编译的代码......我正在为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无济于事....任何帮助表示赞赏=) ^
答案 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));
}