'qualified reference to "OpencvKCFTrackingImpl is a constructor name rather than a type in this context

#include "opencvkcf.h"
#include <complex>
#include <cmath>
#include "opencvtracking.h"

namespace cv {
inline namespace tracking {
namespace impl {

OpencvKCF::OpencvKCF(QObject *parent)
    : QObject{parent}

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

    protected:
        void opencvmodelEstimationImpl(const std::vector<cv::Mat>&){}
        void opencvmodelUpdateImpl(){}
    };

    class OpencvKCFTrackerImpl : public OpencvKCFTracker
    {
    public:
        OpencvKCFTrackerImpl(const OpencvKCFTracker::Params &parameters);

        virtual void init(cv::InputArray image,const cv::Rect& boundingBox);
        virtual bool update(cv::InputArray image, cv::Rect& boundingBox);
        void setFeatureExtractor(void (*f)(const cv::Mat,const cv::Rect, cv::Mat&), bool pca_func = false);
        OpencvKCFTracker::Params params;
        cv::Ptr<OpencvKCFTrackerModel>model;

    protected:
        void createHanningWindow(cv::OutputArray dest, const cv::Size winSize, const int type)const;
        void inline fft2(const cv::Mat src, std::vector<cv::Mat> & dest, std::vector<cv::Mat> & layers_data) const;
        void inline fft2(const cv::Mat src, cv::Mat & dest) const;
        void inline ifft2(const cv::Mat src, cv::Mat & dest) const;
        void inline pixelWiseMult(const std::vector<cv::Mat> src1, const std::vector<cv::Mat>  src2, std::vector<cv::Mat>  & dest, const int flags, const bool conjB=false) const;
        void inline sumChannels(std::vector<cv::Mat> src, cv::Mat & dest) const;
        void inline updateProjectionMatrix(const cv::Mat src, cv::Mat & old_cov,cv::Mat &  proj_matrix,float pca_rate, int compressed_sz,
                                           std::vector<cv::Mat> & layers_pca,std::vector<cv::Scalar> & average, cv::Mat pca_data, cv::Mat new_cov, cv::Mat w, cv::Mat u, cv::Mat v);
        void inline compress(const cv::Mat proj_matrix, const cv::Mat src, cv::Mat & dest, cv::Mat & data, cv::Mat & compressed) const;
        bool getSubWindow(const cv::Mat img, const cv::Rect roi, cv::Mat& feat, cv::Mat& patch, OpencvKCFTracker::MODE desc = OpencvKCFTracker::GRAY) const;

        bool getSubWindow(const cv::Mat img, const cv::Rect roi, cv::Mat& feat, void (*f)(const cv::Mat, const cv::Rect, cv::Mat& )) const;
        void extractCN(cv::Mat patch_data,cv::Mat & cnFeatures) const;

        void denseGaussKernel(const float sigma, const cv::Mat , const cv::Mat y_data, cv::Mat & k_data,
                              std::vector<cv::Mat> & layers_data,std::vector<cv::Mat> & xf_data,std::vector<cv::Mat> & yf_data, std::vector<cv::Mat> xyf_v, cv::Mat xy, cv::Mat xyf ) const;

        void calcResponse(const cv::Mat alphaf_data, const cv::Mat kf_data, cv::Mat & response_data, cv::Mat & spec_data) const;
        void calcResponse(const cv::Mat alphaf_data, const cv::Mat alphaf_den_data, const cv::Mat kf_data, cv::Mat & response_data, cv::Mat & spec_data, cv::Mat & spec2_data) const;
        // Spectrumların yoğunlukları hesaplanır.
        void shiftRows(cv::Mat& mat) const;
        void shiftRows(cv::Mat& mat, int n) const;
        void shiftCols(cv::Mat& mat, int n) const;

    private:
        float output_sigma;
        cv::Rect2d roi;
        cv::Mat hann;   //hann window filter
        cv::Mat hann_cn; //10 dimensional hann-window filter for CN features,

        cv::Mat y,yf;   // training response and its FFT
        cv::Mat x;  // observation and its FFT
        cv::Mat k,kf;   // dense gaussian kernel and its FFT
        cv::Mat kf_lambda; // kf+lambda
        cv::Mat new_alphaf, alphaf; // training coefficients
        cv::Mat new_alphaf_den, alphaf_den; // for splitted training coefficients
        cv::Mat z; // model
        cv::Mat response; // detection result
        cv::Mat old_cov_mtx, proj_mtx; // for feature compression

        // pre-defined Mat variables for optimization of private functions
        cv::Mat spec, spec2;
        std::vector<cv::Mat> layers;
        std::vector<cv::Mat> vxf,vyf,vxyf;
        cv::Mat xy_data,xyf_data;
        cv::Mat data_temp, compress_data;
        std::vector<cv::Mat> layers_pca_data;
        std::vector<cv::Scalar> average_data;
        cv::Mat img_Patch;

        // storage for the extracted features, KRLS model, KRLS compressed model
        cv::Mat X[2],Z[2],Zc[2];

        // storage of the extracted features
        std::vector<cv::Mat> features_pca;
        std::vector<cv::Mat> features_npca;
        std::vector<OpencvKCFTracker::MODE> descriptors_pca;
        std::vector<OpencvKCFTracker::MODE> descriptors_npca;

        // optimization variables for updateProjectionMatrix
        cv::Mat data_pca, new_covar,w_data,u_data,vt_data;

        // custom feature extractor
        bool use_custom_extractor_pca;
        bool use_custom_extractor_npca;
        std::vector<void(*)(const cv::Mat img, const cv::Rect roi, cv::Mat& output)> extractor_pca;
        std::vector<void(*)(const cv::Mat img, const cv::Rect roi, cv::Mat& output)> extractor_npca;

        bool resizeImage; // resize the image whenever needed and the patch size is large

        int frame;
    };



    OpencvKCFTrackerImpl::OpencvKCFTrackerImpl(const OpencvKCFTracker::Params &parameters);
   
}}}

}

**I declared "OpencvKCFTrackingImpl" as a constructor and class type in the block. When I want to declare "OpencvKCFTrackingImpl" other block, I got the error "qualified reference to "OpencvKCFTrackingImpl is a constructor name rather than a type in this context. How can I fixed this situation and also How can I use variable to other blocks in private blocks? **



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source