错误C2678:二进制'>' :找不到带左手操作数的运算符

时间:2014-01-08 20:26:52

标签: c++ visual-studio

我收到这个恼人的错误C2678:二进制'>' :找不到带左手操作数的运算符。 我想使用find_if来查找除数和迭代器返回的值,以便在向量中添加。 我很感激任何想法。

标头文件

#ifndef SMTH_H
#define SMTH_H


#include <vector>
#include <iostream>

    using namespace std;

    using std::vector;

    namespace Calculator{
        namespace Cal{

            typedef unsigned int Uint;
            typedef vector<Uint> TVint;
            typedef vector<Uint>::const_iterator TIterator;
    /..../

        class TestPrim : public Sir
            {
            protected:
                Uint _val;      
                double _stopVal;

            public:
                Uint testPrim;
                TestPrim(Uint val);
                TestPrim& operator ++();
                bool operator () (Uint divizor);
                operator Uint ();
                friend bool operator > (Uint val, const TestPrim &src);

            };
        }
    }
    #endif

Cpp文件

#include <iomanip>
#include "smth.h"
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

namespace Calculator{
    namespace Cal{
/..../

class TestPrim;

        void Prime::CalculeazaValori(int index)
        {
            if(index > MAX_PRIME)
            {
                throw errorCheck();
            }

            if(index == 0)
            {
                _elemente.push_back(2);
                _elemente.push_back(3);
            }

            for (TestPrim testPrim = (_elemente.back() + 2); _elemente.size() < _count; ++testPrim)
            {

                TIterator it = find_if (_elemente.begin(), _elemente.end(), testPrim  );
                if (it > testPrim) //error on this line
                {
                    _elemente.push_back(testPrim);
                }
            }
        }



    }
}

1 个答案:

答案 0 :(得分:1)

这是您的运营商的样子:

friend bool operator > (Uint val, const TestPrim &src);

这就是你使用它的方式:

it > testPrim

itTIterator,而不是Uint。大概是你的意思

*it > testPrim