【发布时间】:2015-08-09 15:20:03
【问题描述】:
我希望标题能完整描述我的问题。
运行代码我得到一个错误:
错误 C2678: 二进制 '==': 未找到采用 tpye 'A' 左侧操作数的运算符(或没有可接受的转换)"
错误在哪里,我该如何解决?
class A
{
private: //Dummy Values
int x;
int y;
}
class B
{
private:
vector <A> dataHandler;
public:
bool isElement(A element);
//Should return true if element exists in dataHandler
}
bool B::isElement(A element)
{
int length = dataHandler.size();
for(int i = 0; i<length; i++)
{
if(dataHandler[i] == element) //Check if element is in dataHandler
return true;
}
return false;
}
【问题讨论】:
-
您应该通过指针存储您的实例,或者实现
operator==与class A的比较。 -
C++ object equality的可能重复
-
@cfh:“通过指针存储您的实例” - 这没有任何意义。如果你在存储指针,你就不是在存储实例。
-
@MikeSeymour:显然,我的意思是存储指向实例的指针。
-
@cfh:哪些实例?如果您将指针存储在向量中,您将它们存储在哪里?您的“简单”建议打开了一大堆蠕虫,将一个非常简单的数据结构变成了更难处理的东西。
标签: c++ vector operator-overloading