我需要模拟一个c api“class”,它基本上是一个包含一组函数指针的结构。这是我的方法。在您看来它是否有效,或者您能建议更好的方法吗?
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
。每次“使用”向量中的值时,迭代器都会递增。