我有一个类Table
它有一个成员函数std::vector<Attribute> attributeVec();
其中Attribute
是一个单独的类。C++比较向量
我与代码,愿做形式
if (tableA.attributeVec() == tableB.attributeVec()){ ...
凡tableA
和tableB
是Table
对象的东西的工作。 我得到了很多奇怪的编译器错误的在Visual Studio 2012是说这样的话
binary '==' : no operator found which takes a left-hand operand of type 'const DatabaseAPI::Attribute' (or there is no acceptable conversion)
所以我相信向量不能这样比较。 如果我能得到这个代码来编译,它会让我的生活更轻松,但我怎么能这样做呢?我可以定义运营商吗?我是否需要重写一些Attribute
课程,以便进行比较?
具体内容:在编写API之后,我给了一组测试,如果合理的话,我需要工作。虽然我相信这至少会对我的代码做出不合理的假设(给定我的API),但在我的代码中实现这一点并不会有什么坏处。
谢谢!
也许一个返回const引用的const方法对于此示例更合适? – juanchopanza 2013-02-19 22:57:56
嗯,我认为这取决于'attributeVec()'的用途。如果客户端代码打算修改它,那么返回非const引用可能很有用。 – piokuc 2013-02-19 22:59:44
你可以有两个版本,但这里只有一个比较,它不需要,也不应该涉及任何非常量操作。 – juanchopanza 2013-02-19 23:00:47