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