【发布时间】:2016-12-31 05:12:55
【问题描述】:
我想要等于 2 个对象,正好是卡片(使用 gtest 进行单元测试)。 这是我的代码:
#include "stdafx.h"
#include <gtest\gtest.h>
#include <vector>
class Card {
public:
Card(int value, int color) :value(value), color(color) {};
int returnColor() const { return color; };
int returnValue() const { return value; };
bool operator==(const Card &card) {
return returnValue() == card.returnValue();
};
private:
int value;
int color;
};
class CardTest : public ::testing::Test {
protected:
std::vector<Card> cards;
CardTest() { cards.push_back(Card(10, 2));
cards.push_back(Card(10, 3));
};
};
TEST_F(CardTest, firstTest)
{
EXPECT_EQ(cards.at(0), cards.at(1));
}
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
我有错误:
状态错误 C2678 二进制“==”:未找到需要 'const Card' 类型的左操作数(或者没有可接受的 转换)
我尝试重载运算符'==',但这不起作用:/ 也许,我必须走另一条路? 这是我的第一个单元测试:D。
【问题讨论】:
-
gtest.h 中的那个错误点第 1448 行
-
bool operator==(const Card &card) const { ...?换句话说,函数不仅应该承诺不改变它给出的引用,还应该承诺不改变this。
标签: c++ c++11 vector googletest