C++的类型转换通用类型

C++的类型转换通用类型,c++,generics,casting,C++,Generics,Casting,我重载了DataStructure类的运算符[],以返回指示的值,如下所示: T& operator[](int i) { return m_array[i]; } for (int i = 0, s = stack->size(); i < s; ++i) { printf("%7i %5i\n", i, stack[i]); } 但当我循环这些值时,我想按如下方式打印它们: T& operator[](int i) { return m

我重载了DataStructure类的运算符[],以返回指示的值,如下所示:

T& operator[](int i) {
    return m_array[i];
}
for (int i = 0, s = stack->size(); i < s; ++i) {
    printf("%7i %5i\n", i, stack[i]);
}
但当我循环这些值时,我想按如下方式打印它们:

T& operator[](int i) {
    return m_array[i];
}
for (int i = 0, s = stack->size(); i < s; ++i) {
    printf("%7i %5i\n", i, stack[i]);
}
由于某些原因,它不是整数类型。

如果堆栈是指向堆栈的指针,那么堆栈[i]不会调用堆栈的运算符[]。它将指针视为指向数组第一个元素的指针,并尝试索引到该数组中。或者不要将其作为指针:

Stack<int> stack(STACKSIZE);

您可以发布一个吗?运算符[]函数使用名为m_array的成员。在printf语句中,您使用的是stack[i],它似乎是堆栈对象的数组。显然,stack[i]的计算结果是一个stack对象。m_数组和堆栈之间的关系是什么?你来自Java吗?你会想在C++中使用新的比java中少很多。当我尝试第一个选项时,更多的东西被破坏了。然而,第二种选择是可行的。谢谢你解释为什么它不起作用。
(*stack)[i]