Как использовать 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); }
}; 
Другие вопросы по тегам