我正在尝试创建一个cv :: Rect对象
为什么cv::Rect(100,100,100,100)
;作品
但是static_cast<cv::Rect>(100,100,100,100)
;失败了?
我理解第一个是构造函数,第二个是简单地尝试将参数类型转换为cv::Rect
对象。
我可以在这里使用static_cast
吗?
答案 0 :(得分:4)
在第一种情况下,(100,100,100,100)
是cv::Rect
构造函数的参数列表。
在第二种情况下,(100,100,100,100)
是表达式,其计算结果为100.请注意,,
充当表达式分隔符运算符上下文。
static_cast<cv::Rect>(100)
显然失败了。
使用static_cast
没有可行的方法,除非你愿意进入用户定义的文字的阴暗世界。但即使这样,你也必须稍微调整语法,然后你就可以完全放弃static_cast
。