我正在构建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());
}

这是完成预期工作的有效方法吗? 我应该如何处理? 有什么建议么

===============>>#1 票数: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());
}

  ask by Rushabh translate from so

未解决问题?本站智能推荐:

3回复

在函数内部分配变量类型和大小数组(C ++)

我希望创建一个表示数组的pointer 。 数组的大小和类型(int,double,string等)由函数以及值决定。 我尝试使用void**但遇到了segment error 。 注意:我不能用数组/指针返回函数f() 。 我需要返回char / integer。
4回复

删除是否需要用于在向量中创建的新数组?

我正在尝试为void **数据数组创建一些动态数组。 如果要清理我应该使用 或者是否需要删除每个新的(如果有的话),如何完成?
2回复

C:使用空指针数组

我是C的新手,在使用和理解指针(尤其是空指针)方面仍然很虚弱。 我正在尝试编写一个函数,该函数从文件加载数据并将这些数据存储在void指针数组中,以使该数组的每个元素都具有(在本示例中)该文件行中的字符串。 我怀疑代码有几个问题: 我不确定是否正确使用* voidArray []作
2回复

在extern C声明中对象和空指针可以互换吗?

我有一个外部“ C”接口,用于一些动态加载的代码。 对于该代码,某些对象是不透明的句柄,表示为void* 。 该界面如下所示: 这种模式几乎是跨C-API AFAIK与C ++对象进行交互的标准方法。 但是我想知道是否可以忽略该指针转换吗? 代码的调用者是生成的,并且仅与上面
4回复

向C中的数组指针分配和取消引用void *

我有一个指向固定大小整数元素数组的指针。 填充该数组后,我将其分配给void * pBuff。 稍后,我需要通过失败的void指针访问数组元素。 这是使用C的代码: against *(int *)pBuff[i]. 它提示对*(int *)pBuff [i]进行的错误转换。
3回复

在指向C ++中的缓冲区(字符串“”)的空指针上使用sizeof()以便在BYTES中获得大小吗?

我的要求是 1)在缓冲区中存储一些数据并在第1行中创建指向它的void *指针。 2)稍后我想在BYTES中获取此缓冲区的大小。 第二行将完成此工作。
2回复

在C中将(指向整数数组的指针)分配给(指向作为void指针的整数数组的指针)

我遇到过类似以下的C代码: 根据我的理解,行int (*b)[10] = (void*) a; 试图将指针b (应该指向10个整数的数组)分配给数组的起始地址作为无效指针a类型转换。 我本来期望b[i]来保持相同的数据, a[i]为i=0..9 (和0以外的任何索引至9 b导致一些不
2回复

如何在给定位置取消引用空指针的内容

在下面的Print方法中,调用Put方法后如何读取数组的内容? 我在输出中得到“ 0”或“&”。
1回复

如何将指针返回到void *指向的数组中的数组位置?

我有一个队列,它是一个由char数组组成的数组,由一个名为data的void指针指向,它拥有正确的地址0x00008E80 。 队列的尾部由一个简单的索引整数跟踪,在这种情况下,它等于6 ,即第7个数组位置。 我想返回一个指向尾部数组位置的指针,该指针应为0x00008E86 。
3回复

释放空指针

如何释放一个空指针。 显示错误运算符'delete',应用于具有未定义行为的void *参数,并且很可能不会调用该对象的析构函数。