Как создать класс-макет с помощью оператора []?
У меня есть класс с operator[]
, например:
class Base
{
public:
virtual ~Base(){}
virtual const int & operator[]( const unsigned int index ) const = 0;
};
Как я могу создать класс mock с использованием фреймворка google для этого метода?
Я пробовал это:
class MockBase : public Base
{
public:
MOCK_CONST_METHOD1( operator[],
const int& ( const unsigned int )
);
};
но это приводит к следующим ошибкам:
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
Ответы
Ответ 1
Макросы MOCK_METHOD#
не будут работать с операторами. Решение, приведенное в это сообщение, говорит, чтобы создать обычный метод для насмешек:
class Base {
public:
virtual ~Base () {}
virtual bool operator==(const Base &) = 0;
};
class MockBase: public Base {
public:
MOCK_METHOD1(Equals, bool(const Base &));
virtual bool operator==(const Base & rhs) { return Equals(rhs); }
};