我想重載下標運算符以便使用它來 填充地圖類中使用的模板。C++模板和重載下標運算符
這是模板結構
template<typename K, typename V>
struct Node
{
V Value;
K Key;
};
正是在這樣的課堂上使用
地圖類
template<typename K, typename V>
class myMap
{
public:
myMap();
~myMap();
V& operator[] (const K Key);
private:
const int mInitalNumNodes = 10; //Start length of the map
int mNumOfNodes; //Count of the number of Nodes in the map
int mCurrentPostion;
Node<K,V> mNodeList[10];
};
我想重載下標操作,使我可以把一個關鍵和一個價值通過這個函數調用進入mNodeList。
類和話務員呼叫
myMap<char, int> x;
x[1] = 2;
我如何過繼續讓我的超載執行錯誤,你能指出我在正確的方向。
運算符重載
template<typename K, typename V>
inline V& myMap<K, V>::operator[](const K Key)
{
// TODO: insert return statement here
Node<K, V> newNode;
newNode.Key = Key;
mNodeList[mCurrentPostion] = newNode;
mCurrentPostion++;
return mNodeList[&mCurrentPostion-1];
}
錯誤:
非法索引不允許
初始化不能從初始化轉換爲節點
'節點 newNode = {newNode.Key =鍵,};'Ehrm ...什麼? –
這個問題不是關於下標操作符,而是關於結構初始化的問題。如果您相應地編輯標題並減少問題,您可能會得到更好的答案。 (即@SimonKraemer指出的問題也應該是另一種情況下的問題。) – anderas
是的,我修正了這個問題,它仍然是下標操作符不工作 – Lawtonj94