关于c++中public & private方法调用问题

class IDNoIdentifier
{
public:
    IDNoIdentifier();
    ~IDNoIdentifier();

    typedef vector<cv::Rect> CvRectVectorType;

    bool Init();
    bool Cleanup();
    bool HandleData(const Mat& rawImg,string& sNoInfo,string& sError);

private:
    bool IDNoLocation(const Mat& rawImg,        //输入原始BGR24数据
        Mat& dstImg,                            //经偏转校正等处理后的结果图,BGR8(灰度图),该函数内创建内存
        CvRectVectorType& IDNoVector,            //基于灰度图的字符位置序列
        string& sError);                        //如果处理失败,返回失败原因

    bool IDNoIdentify(const Mat& dstImg,const CvRectVectorType& IDNoVector,string& sInfo,string& sError);

private:
};

 

bool IDNoIdentifier::HandleData( const Mat& rawImg,string& sNoInfo,string& sError)
{
    if (rawImg.empty())
    {
        return false;
    }
    Mat dstImg;
    CvRectVectorType posionVec; 
    if (!IDNoLocation(rawImg,dstImg,posionVec,sError))
    {
        if (!dstImg.empty())
        {
            dstImg.release();
        }
        return false;
    }

....
}

public类型的HandleData里面包括了一个private的IDNoLocation

 

class codeExtract
{
public:
    codeExtract();
    ~codeExtract();
private:
    
    Mat picProcess(Mat img);
}

 

bool IDNoIdentifier::IDNoLocation( const Mat& rawImg,Mat& dstImg,CvRectVectorType& IDNoVector,string& sError)
{
    
    codeExtract code;
    
    /*图片二值化*/
    Mat img=code.picProcess(rawImg);   //字符清楚,矫正角度
...
}

会报错, error C2248: “codeExtract::picProcess”: 无法访问 private 成员(在“codeExtract”类中声明)

 

原因:因为这是IDNoIdentifier类下的方法啊。在这个类下不能看到类codeExtract中定义的私有方法滴

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。