2014-11-01 77 views
1

好的,我的指針技能有點差。我創建了我自己的簡單地圖容器,其中可以存儲不同的數據類型。我試圖創建insertPair()方法,其中一個結構存儲在一個指針數組中,但我正在努力的語法。我創建了一個結構,並試圖將a的值指定爲temp.keybtemp.value。我如何做到這一點,並將結構存儲在指針數組中? ive在main()中創建了test對象,並通過了intstring。任何指導極大的讚賞。謝謝如何使用模板將結構存儲在指針數組中

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 2014-11-01 01:15:29

+0

對不起,我更改了類名而未更新它的構造函數。我修改了代碼。 (地圖是舊的類名) – user3424696 2014-11-01 01:26:01

回答

0

temp.key = a;應該是temp->key = a;。同樣,temp.value應該是temp->value

要獲取或設置*myArr索引i值,你可以使用(*myArr)[i]因爲myArr是一個指向數組的指針。