【问题标题】:Where is OpenCV's C++ noArray() in the Source Code?源代码中 OpenCV 的 C++ noArray() 在哪里?
【发布时间】:2014-03-29 05:30:02
【问题描述】:

只是一个简单的问题..我通过源代码找到了很多点击,无法查看。尝试将 grep 的输出保存到文件中,即

grep -r "noArray" . >> search

然后在“搜索”文件中搜索 typedef 和 enum ......但什么都没找到

【问题讨论】:

    标签: c++ c opencv wrapper


    【解决方案1】:

    在 OpenCV 2.4.8 中,函数在 modules\core\include\opencv2\core\core.hpp:1453 中声明:

    CV_EXPORTS OutputArray noArray();
    

    并且定义在modules\core\src\matrix.cpp:1731:

    static _OutputArray _none;
    OutputArray noArray() { return _none; }
    

    编辑

    _none 是使用默认构造函数初始化的_OutputArray 类型的静态对象,默认构造函数为空(参见modules\core\src\matrix.cpp:1332)。因此,由于_OutputArray 派生自_InputArray,因此也会调用_InputArray 的默认构造函数。第二个构造函数在modules\core\src\matrix.cpp:921 中定义如下:

    _InputArray::_InputArray() : flags(0), obj(0) {}
    

    其中flagsobj 是各自类型intvoid* 的成员变量。因此_none 不是空指针,但它包含一个。

    【讨论】:

    • 返回值_none代表什么,你知道吗?是空指针吗?
    • @user3411335 _none 不是 NULL 指针,但它包含一个。查看我的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多