Как использовать gmock MOCK_METHOD для перегруженных операторов?
Я новичок в GoogleMock (и Stackru). У меня проблема при использовании MOCK_METHODn
в googlemock и я считаю, что эта функция широко используется. Вот что я сделал.
У меня есть абстрактный класс Foo
с виртуальной перегрузкой operator[]
:
class Foo{
public:
virtual ~Foo(){};
virtual int operator [] (int index) = 0;
}
и я хочу использовать GoogleMock, чтобы получить MockFoo
:
class MockFoo: public Foo{
public:
MOCK_METHOD1(operator[], int(int index)); //The compiler indicates this line is incorrect
}
Тем не менее, этот код дает мне ошибку компиляции, как это:
error: pasting "]" and "_" does not give a valid preprocessing token
MOCK_METHOD1(operator[], GeneInterface&(int index));
Я понимаю, что компилятор неправильно понимает operator[]
и не воспринимает это как имя метода. Но как правильно издеваться над operator[]
используя MOCK_METHODn
? Я прочитал документы из googlemock, но не нашел ничего, связанного с моим вопросом. Кто-нибудь может мне помочь с этим?
Спасибо!
1 ответ
Ты не можешь См. https://groups.google.com/forum/.
Решение состоит в том, чтобы просто создать обычный старомодный перегруженный метод, например, так:
class Foo {
public:
virtual ~Foo() {}
virtual int operator [] (int index) = 0;
};
class MockFoo: public Foo {
public:
MOCK_METHOD1(BracketOp, int(int index));
virtual int operator [] (int index) override { return BracketOp(index); }
};