使用void指针在C ++中打印数组

时间:2014-04-19 23:15:45

标签: c++ arrays pointers void-pointers

我正在构建一个DirectX游戏,我在Debug类中定义了一个Debug :: Log静态函数。这只是在输出/控制台上打印传递参数的值。 我想实现一个函数,我可以将一个起始指针传递给数组(我想要打印),并打印数组中的所有元素。但是我想让函数灵活处理传递的params类型。所以,我正在做这样的事情......

static void DebugArray(void* pointerToArray) {
    std::stringstream ss;
    ss << "\n";

    void *i = pointerToArray;
    int k = 0;
    while(i) {
        ss << i; //This is how I am storing the array's elements
        i++; //Error in VS 2012 expression must be a pointer to a complete object type  

    }
    print(ss.str());
}

这是做正常工作的有效方法吗?我该怎么做呢?任何建议

1 个答案:

答案 0 :(得分:2)

类型需要在编译时知道,因此您需要使用模板。

template <class T>
static void DebugArray(T* pointerToArray) {
    std::stringstream ss;
    ss << "\n";

    T *i = pointerToArray;
    int k = 0;
    while(i) {
        ss << *i; //This is how I am storing the array's elements
        i++; //Error in VS 2012 expression must be a pointer to a complete object type  

    }
    print(ss.str());
}