可以說我有一個結構爲value
如何將指針映射到unordered_map中的對象?
struct Friend { Person * a, Person* b}
然後,我有另一個類爲key
class Relation;
現在我想創建一個鍵值關係
std::unordere_map<Relation*, Friend> my_map;
我曾嘗試
Relation* r;
Person * p1;
Person * p2;
my_map[r] = {p1, p2}; // works
my_map[r] = new Friend(p1,p2); // does not work
// error says : error: no match for 'operator='
// my_map[r] = Friend(p1, p2); /// also does not work
// After Edit from Zan
// error: no matching function for call to 'Friend::Friend()'
struct Friend {
Friend(Person* x, Person* y){
a = x;
b = y;
}
Person * a;
Person* b;
}
映射中的值類型是「Friend」,而不是「朋友*'(即:不是指針)。因此'my_map [r] =新朋友(p1,p2);''不會工作,因爲你試圖存儲一個指針作爲值 –
如果你真的想存儲一個指針作爲你的值類型,你必須改變你的地圖定義,'std :: unordered_map my_map;' –
@SteveLorimer是的,它做到了..我想我問了一個問題之前思考:/ – solti