0

我需要模拟 ac 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's 和std::vector::iterator's 而不是std::queue's。每次我“使用”向量中的值时,迭代器都会递增。

4

0 回答 0