[英]Overloading subscript operator in a template class
我正在嘗試實現一個通用(模板)雙向鏈表,類似於C#.NET實現。
我想構建一個“捷徑”方法來獲取具有某個索引的元素,並決定使用下標運算符。 我按照說明做了,並想出了類似的東西。
template <typename T>
class List
{
public:
T& operator[] (int index)
{
return iterator->GetCurrentValue(); //iterator is of type Iterator<T> and returns T&
}
};
但是當我在我的代碼中使用它時:
List<int>* myList = new List<int>();
...
int value=myList[i]; //i is int
我得到一個編譯器錯誤: main.cpp:18: error: cannot convert 'List<int>' to 'int' in initialization
在最后一行的main.cpp:18: error: cannot convert 'List<int>' to 'int' in initialization
中將main.cpp:18: error: cannot convert 'List<int>' to 'int' in initialization
。
我試過它返回值,而不是引用,但仍然是同樣的錯誤。
為什么將int
返回值解釋為List<int>
?
我正在使用NetBeans和Cygwin gcc-c ++。
為什么將
int
返回值解釋為List<int>
?
不是。 myList
是一個指向List
的指針,它不是List
本身。 你需要使用(*myList)[i]
。
在這種情況下你真的不太需要動態分配,所以我的建議是不使用指針,不使用new
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.