C++ OpenCV中cv::Mat类中的布尔运算符
我正试图编写一个大型测试宏,对我的类行为(包括构造函数、析构函数)进行一些合理性检查。我的代码(部分)如下所示:C++ OpenCV中cv::Mat类中的布尔运算符,c++,opencv,operators,boolean,computer-vision,C++,Opencv,Operators,Boolean,Computer Vision,我正试图编写一个大型测试宏,对我的类行为(包括构造函数、析构函数)进行一些合理性检查。我的代码(部分)如下所示: TEST(basic_getters_setters_contructors) { // Macro name) myNameSpace::myClass mc(cv::Mat::ones(1,2,CV_32S),cv::Mat::zeros(4,8,CV_32S)); CHECK_EQUAL(false, mc.item1 == NULL); //.......
TEST(basic_getters_setters_contructors) { // Macro name)
myNameSpace::myClass mc(cv::Mat::ones(1,2,CV_32S),cv::Mat::zeros(4,8,CV_32S));
CHECK_EQUAL(false, mc.item1 == NULL);
//.......Rest of the checks
error C2678: binary '!': no operator found which takes a left-hand operand of type
'cv::MatExpr' (or there is no acceptable conversion)
当我构建它时,我得到编译器错误:
TEST(basic_getters_setters_contructors) { // Macro name)
myNameSpace::myClass mc(cv::Mat::ones(1,2,CV_32S),cv::Mat::zeros(4,8,CV_32S));
CHECK_EQUAL(false, mc.item1 == NULL);
//.......Rest of the checks
error C2678: binary '!': no operator found which takes a left-hand operand of type
'cv::MatExpr' (or there is no acceptable conversion)
我很确定错误来自那一行,而不是其他任何地方。我尝试使用intellisense,发现mc.item1==NULL
作为cv::MatExpr
对象计算。在cv::MatExpr
类中有一个名为flag
的公共成员。这是我应该检查的一个,看它是0(假)还是1(真)?或者有没有其他(具体的)方法
如果这是一个愚蠢的问题,请不要投票否决我:(。。。
亲切问候,如果要检查矩阵是否已填充,则如果矩阵没有元素,则mymat.empty()将返回true。请参阅,我还找到了可能感兴趣的函数。请参阅。您忘了说明检查的目的。实际上,如果我这样做,请检查等于(false,&mc.item1==null)它可以工作!我想我需要引用它。@etarion谢谢你指出这一点,我正在检查类型为cv::Mat的item1是否为null。这证明了myClass实例存在/不存在!