簡體   English   中英

在模板類中重載下標運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM