模拟一个具有const char类型的out参数的函数**

时间:2012-11-07 15:33:34

标签: c++ c++98

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

0 个答案:

没有答案