我正在构建一个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());
}
这是做正常工作的有效方法吗?我该怎么做呢?任何建议
答案 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());
}