Мне нужно смоделировать «класс» c api, который в основном представляет собой структуру, содержащую набор указателей на функции. Вот мой подход. По вашему мнению, это действительно так или вы можете предложить лучший подход?
typedef struct MockCApi: public CApi
{
MockCApi()
{
// Hook in function
getName = nameFunc;
}
static void reset()
{
handle.clear();
name.clear();
returnValue.clear();
}
static ReturnType nameFunc(HandleType _handle, const char** _name)
{
handle.push_back(_handle);
poppedNames.push_back(name.front());
*_name = poppedNames.back().c_str();
ReturnType _returnValue = returnValue.front();
returnValue.pop_front();
return _returnValue;
}
static std::deque<HandleType> handle;
static std::deque<std::string> name;
static std::deque<ReturnType> returnValue;
private:
static std::deque<std::string> poppedNames;
};
ОБНОВИТЬ
Другой подход, который я имею в виду, заключается в использовании std::vector
и std::vector::iterator
вместо std::queue
«S. Итератор будет увеличиваться каждый раз, когда я «использую» значение в векторе.
Задача ещё не решена.
Других решений пока нет …