错误 C2679:二进制'>':找不到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)
error C2679: binary '>' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
无论出于何种原因,当我尝试比较特定函子中的两个 int 值时,它只会给我这个错误
MVCE
首先是我称之为函子的部分
二是阶级主体
三是函子的博菲
int main()
{
int compare;
std::vector<int> vectInt({ 1, 2, 11, 12, 34 });
std::cout << "Enter value for comparing: ";
std::cin >> compare;
int count = countGreater<int>()(vectInt, compare);
return 0;
}
class SquareTriangle
{
int cathetus1, cathetus2;
public:
SquareTriangle() {}
~SquareTriangle() {}
SquareTriangle(int first, int second)
{
this->cathetus1 = first;
this->cathetus2 = second;
}
double getArea() const
{
return (cathetus1 * cathetus2) / 2;
}
friend bool operator < (const SquareTriangle &first, const SquareTriangle &second)
{
if (first.getArea() < second.getArea())
return true;
else
return false;
}
friend bool operator > (const SquareTriangle &first, const SquareTriangle &second)
{
if (first.getArea() > second.getArea())
return true;
else
return false;
}
friend double operator << (const SquareTriangle &first, const SquareTriangle &second)
{
return first.getArea();
}
friend double operator += (const SquareTriangle &first, const SquareTriangle &second)
{
first.getArea() += second.getArea();
return first.getArea();
}
};
typedef SquareTriangle ST;
template <typename Q>
class countGreater
{
int count = 0;
public:
int operator () (const std::vector<Q> &ptr, int compare = 0)
{
if (sizeof(Q) == sizeof(ST))
{
int first, second;
std::cout << "Enter first cathetus: ";
std::cin >> first;
std::cout << "Enter second cathetus: ";
std::cin >> second;
ST valueST(first, second);
for (int i = 0; i < ptr.size(); i++)
{
if (ptr[i] > valueST)
{
count++;
}
}
}
else
{
for (int i = 0; i < ptr.size(); i++)
{
*if (ptr[i] > compare)*
{
count++;
}
}
}
std::cout << "Number of elements greater than chosen: ";
return count;
}
};
给出错误的行
if (ptr[i] > compare)
完整的错误消息C2679:二进制">":未找到采用类型为"int"的右操作数的运算符(或没有可接受的转换(
如果我重新排序并修复#includes
,您的代码中至少有两个错误。 首先,这不会编译:
friend double operator += (const SquareTriangle &first, const SquareTriangle &second)
{
first.getArea() += second.getArea();
return first.getArea();
}
因为您正在尝试为表达式分配某些内容。如果要增加first
的面积,则必须修改数据成员(catheti(。不知道你为什么要这样做,因为无论如何它都没有多大意义。
其次,此if
行不编译:
if (ptr[i] > valueST)
{
count++;
}
因为ptr[i]
最终是一个整数,而valueST
是类的一个实例。由于您没有办法将int
与SquareTriangle
进行比较,因此它会中断。不过,不确定您要做什么。与该地区相比,也许?
相关文章:
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 是否所有C++运算符都接受操作数?
- 一元*运算符的操作数是否期望一个 prvalue
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- 没有运算符"="与这些操作数匹配,JUCE 窗口演示应用程序
- C2679 二进制"<<":未找到采用右操作数类型的运算符
- CPP 运算符重载操作数位置 [] 与 ==
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 运算符'<'不能应用于类型 'string' 和 'string' 的操作数
- 错误 C2679 二进制"<<":未找到采用类型为 'T' 的右侧操作数的运算符
- 是否允许三元运算符在C++中计算两个操作数?
- 二进制 '==':未找到采用 'Enemy' 类型左侧操作数的运算符(或者没有可接受的转换)
- 与"运算符>>"不匹配(操作数类型为"QDataStream"和"QJsonObject")
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 如何摆脱逗号运算符的这个错误右操作数没有效果( wunsued 值)?
- c++ 错误:二进制"运算符+"类型"矩阵*"和"矩阵*"的操作数无效
- c++运算符重载-我实际返回的操作数类型是什么
- 没有运算符>>与这些操作数匹配 ifstream