Typecast泛型类型C++

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)

由于某种原因,它"不是"整数类型.

use*_*ica 7

如果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)