我收到这个恼人的错误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);
}
}
}
}
}
答案 0 :(得分:1)
这是您的运营商的样子:
friend bool operator > (Uint val, const TestPrim &src);
这就是你使用它的方式:
it > testPrim
it
是TIterator
,而不是Uint
。大概是你的意思
*it > testPrim