ran*_*alt 0 c++ generics casting
我重载了operator[]我的DataStructure类以返回指示的值,如下所示:
T& operator[](int i) {
return m_array[i];
}
Run Code Online (Sandbox Code Playgroud)
但是当我遍历值时,我想按如下方式打印它们:
for (int i = 0, s = stack->size(); i < s; ++i) {
printf("%7i %5i\n", i, stack[i]);
}
Run Code Online (Sandbox Code Playgroud)
因为我创建了通用DataStructure作为整数Stack(派生类)
stack = new Stack<int>(STACKSIZE);
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我希望每一个项目在堆栈中为int,但是编译器说,我不能强制转换Stack<int>到int,即使我不是要强制转换的堆栈!
我错过了什么?另外,我不能用
printf("%7i %5i\n", i, (int)stack[i]);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它"不是"整数类型.
如果stack是指向a的指针Stack<int>,stack[i]则不调用堆栈operator[].它将指针视为指向数组第一个元素的指针,并尝试索引到该数组.要么不使它成为指针:
Stack<int> stack(STACKSIZE);
Run Code Online (Sandbox Code Playgroud)
或取消引用指针:
(*stack)[i]
Run Code Online (Sandbox Code Playgroud)