我重载了 operator[]
对于我的 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]);
}
自从我将通用 DataStructure 创建为整数 Stack(派生类)
stack = new Stack<int>(STACKSIZE);
但这行不通。我希望堆栈上的每个项目都是 int,但编译器说我不能类型转换 Stack<int>
至 int
,即使我没有尝试对 Stack 进行类型转换!!!
我错过了什么?还有,我不能用
printf("%7i %5i\n", i, (int)stack[i]);
因为某些原因它“不是”整数类型。
如果stack
是指向 Stack<int>
的指针, 然后 stack[i]
不调用堆栈的 operator[]
.它将指针视为指向数组第一个元素的指针,并尝试索引到该数组。要么不要让它成为一个指针:
Stack<int> stack(STACKSIZE);
或取消引用指针:
(*stack)[i]
我是一名优秀的程序员,十分优秀!