私は2つのオブジェクト、正確にカード(gtestのユニットテスト)が必要です。 これは私のコードです:Gtest、equalsオブジェクト
#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();
}
私がエラーを持っている:
State Error C2678 binary '==': no operator found which takes a left-hand operand of type 'const Card' (or there is no acceptable conversion)
私は '==' 過負荷演算子を試してみてください、これは動作しない:/ たぶん、私は他の道を行かなければなりませんか? これは私の最初のユニットテストです:D。
gtest.hのエラーポイント行1448 – 21koizyd
'bool operator ==(const Card&card)const {...'?言い換えれば、関数はそれが与えられたリファレンスを突然変異させないことを約束するだけでなく、 'this'を突然変異させないことも約束するべきです。 – Unimportant