我正在构建DirectX游戏,其中在Debug类中定义了Debug::Log静态函数。这只是在输出/控制台上打印所传递参数的值。
我想要实现一个函数,在该函数中我可以将起始指针传递给数组(我要打印),并打印数组中的所有元素。但是我想让函数灵活地传递所传递的参数类型。所以,我正在做这样的事情。
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());
}
这是完成预期工作的有效方法吗?我应该如何处理?有什么建议么
最佳答案
类型需要在编译时知道,因此您需要使用模板。
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());
}
关于c++ - 使用空指针在C++中打印数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23176658/