我重載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