我重载operator[]
我DataStructure
类返回指定的值,如下所示:类型转换泛型类型C++
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]);
}
由于我创建的一般数据结构为一个整数栈(派生类)
stack = new Stack<int>(STACKSIZE);
但这不起作用。我预计堆栈中的每个项目都是int,但是编译器说我不能转换Stack<int>
到int
,尽管我没有试图对一个堆栈进行类型转换!
我错过了什么?另外,我无法使用
printf("%7i %5i\n", i, (int)stack[i]);
由于某种原因,它“不是”一个整数类型。
您可以发布[小例子,让我们看到了误差为自己(HTTP://计算器。 COM /帮助/ MCVE)? – user2357112
您的'operator []'函数使用名为'm_array'的成员。在'printf'语句中,你使用'stack [i]',它看起来是一个'Stack'对象的数组。显然,'stack [i]'评估为一个'Stack'对象。 'm_array'和'stack'之间有什么关系? –
你来自Java吗?你会希望在C++中使用'new'比使用Java更少。 – user2357112