0

OpenCV のマップでスカラー クラスを使用できるように、カスタム スカラー オブジェクトを使用して C++ で STL マップを取得しようとしています。次のエラーが表示されます。

error: ‘template class std::map’ used without template parameters

これは私が使用しているテンプレートです:

template<typename _Tp> class MyScalar_ : public Scalar_<_Tp>{
public:
    MyScalar_();
    MyScalar_(Scalar_<_Tp>& s){
        _s = s;
    };
    _Tp& operator[](const int idx){
        return _s[idx];
    }
    //std::less<_Tp>::operator()(const _Tp&, const _Tp&) const
    //this wont work if scalars are using doubles
    bool operator < (const MyScalar_<_Tp>& obj) const {
        double lhs,rhs;
        lhs = _s[0] + _s[1] + _s[2] + _s[3];
        rhs = _s[0] + _s[1] + _s[2] + _s[3];
        return lhs > rhs;
    }
    bool operator == (const MyScalar_<_Tp>& obj) const{
        bool valid = true;
        for(int i = 0;i<_s.size();i++){
            if(_s[i] != obj[i])
                return false;
        }
        return valid;
    }
    private:
        Scalar_<_Tp> _s;
};

std::map< MyScalar,Point > edgeColorMap;ヘッダーファイルにもあります

上記のエラーは、次の行を示しています。

auto tempit = edgeColorMap.find(s);
    if(tempit != std::map::end){//found a color that this pixel relates to

if ステートメントで失敗し、その理由がわかりません??

4

1 に答える 1

1

map実際のインスタンスからイテレータを使用する必要があります。

if(tempit != edgeColorMap.end()) {

std::map::end()コンテナの最後の要素に続く要素に iterator または const_iterator を返す単なる通常の関数です。

于 2012-11-15T23:37:52.157 に答える