为什么static_cast不能用于cv :: Rect

时间:2017-09-20 13:51:11

标签: c++ opencv c++11 c++14

我正在尝试创建一个cv :: Rect对象

为什么cv::Rect(100,100,100,100);作品 但是static_cast<cv::Rect>(100,100,100,100);失败了?

我理解第一个是构造函数,第二个是简单地尝试将参数类型转换为cv::Rect对象。

我可以在这里使用static_cast吗?

1 个答案:

答案 0 :(得分:4)

在第一种情况下,(100,100,100,100)cv::Rect 构造函数参数列表

在第二种情况下,(100,100,100,100)表达式,其计算结果为100.请注意,,充当表达式分隔符运算符上下文。

static_cast<cv::Rect>(100)显然失败了。

使用static_cast没有可行的方法,除非你愿意进入用户定义的文字的阴暗世界。但即使这样,你也必须稍微调整语法,然后你就可以完全放弃static_cast