我为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
,即使我没有尝试对栈进行类型转换!!!
我错过了什么?另外,我不能使用
printf("%7i %5i\n", i, (int)stack[i]);
由于某种原因,它“不是”整数类型。
答案 0 :(得分:7)
如果stack
是指向Stack<int>
的指针,则stack[i]
不会调用堆栈的operator[]
。它将指针视为指向数组第一个元素的指针,并尝试索引到该数组。不要把它变成指针:
Stack<int> stack(STACKSIZE);
或取消引用指针:
(*stack)[i]