using namespace std;
class A {
public:
A() {}
~A() {}
map<int, string*>& getMap() {
return mapStr;
}
void setMap(const map<int,string*> m) {
mapStr = m;
}
private:
map <int, string*> mapStr;
};
class B {
public:
A getA() {
return a;
}
private:
A a;
};
int main(int argc, char*argv[]) {
map<int, string*> mm;
mm.insert(std::make_pair(1, new string("abc")));
mm.insert(std::make_pair(2, new string("def")));
B b;
b.getA().setMap(mm);
cout << "Size " << b.getA().getMap().size() << std::endl;
return 0;
}
輸出: 尺寸0爲什麼地圖大小返回0
任何想法,爲什麼會發生這種返回地圖大小爲0,需要做的是固定的
您是否在將mm分配給A中包含的尺寸之前嘗試寫入尺寸? – Jack 2009-11-05 23:41:54
除了'getA'返回一個引用外,爲了提高效率,setMap的參數應該通過引用傳遞:'void setMap(const map&m)'。否則,setMap將獲得一個臨時參數副本。 –
outis
2009-11-06 00:00:30