2014-11-01 1 views
1

Хорошо, мои навыки указателя немного бедные. Im создает мой собственный простой контейнер карты, где могут храниться различные типы данных. Я пытаюсь создать метод insertPair(), где структура хранится в массиве указателей, но я боюсь синтаксиса. Я создал структуру, и я попытался присвоить значение atemp.key и b - temp.value. как это сделать и сохранить структуру в массиве указателей? ive создал test объект в main() и передал в int и string. Любые рекомендации очень ценятся. Благодарякак хранить структуры в массиве указателей с использованием шаблона

template <typename K, typename V> 
class CMyMap 
{ 
    int arraysize; 
    CMyMap* myArr[5]; 
public: 

    struct pair 
    { 
     K key; 
     V value; 
    }; 

    CMyMap() 
    { 
     arraysize = 0; 
    } 

    void insertPair(K a, V b) 
    { 
     pair* temp = new pair; 
     temp->key = a; 
     temp->value = b; 

     myArr[0] = temp; // trying to store the values of temp.key and temp.value to myArr[0] 
    } 

    void display() 
    { 
     // dont how to display the key and value correctly. 
     cout << myArr[0] << endl; 
    } 
}; 

int main() 
{ 
    CMyMap<int, string> test; 

    test.insertPair(23, "bob"); 

    test.display(); 

    cin.get(); 
} 
+0

Несколько проблем: что такое 'map'? Почему у вас есть метод с именем 'map()' без типа возврата? Вы указали указатель, но вы обращаетесь к методам с помощью оператора '.', когда он должен быть' -> '. Внутри конструктора вы объявляете новую переменную вместо изменения члена данных. 'temp' является указателем на пару, но вы назначаете его массиву *' map * '*, к которому он несовместим ... – 0x499602D2

+0

Извините, я изменил имя класса без его обновления для конструктора. Ив пересмотрел код. (карта была именем старого класса) – user3424696

ответ

0

temp.key = a; должен быть temp->key = a;.

Аналогичным образом, temp.value должно быть temp->value.

Чтобы получить или установить значение по индексу i в *myArr, вы будете использовать (*myArr)[i] так myArr является указателем на массив.

Смежные вопросы