Я пытаюсь перегрузить оператор индекса, чтобы использовать его для заполнить шаблон, который используется в классе карты.Шаблоны 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];
}
Ошибки:
нелегальный индекс не позволил
инициализация не может конвертировать из инициализаторе в узел
'Node newNode = {newNode.Key = Key};' Ehrm ... Что ? –
Этот вопрос связан не с оператором индекса, а с проблемой инициализации структуры. Если вы соответствующим образом отредактируете заголовок и уменьшите проблему, вы можете получить более качественные ответы. (т. е. проблема, отмеченная @SimonKraemer, также должна быть проблемой в другом контексте.) – anderas
Да, я исправил это, проблема в том, что он все еще работает с индексом. – Lawtonj94