0
我有兩個向量,我想在將對象從一個移動到另一個之前移動它,然後製作一個指向該對象的指針。但是當我刪除第一個向量中的索引時,如果通過指針訪問對象內的容器是空的。這很難形容,一些代碼將更好地解釋它:移動和擦除後,對象的容器字段爲空
Word.h
class Word
{
public:
Word(string text);
~Word();
string text;
};
Card.h
class Card
{
public:
Card(vector<Word>& words);
~Card();
vector<Word> words;
};
的main()
vector<Word> words {
Word("dog"),
Word("cat"),
Word("horse")
};
Card card(words);
vector<Card> deck1;
vector<Card> deck2;
deck1.push_back(move(card));
Card* p = &deck1[0];
deck2.push_back(move(deck1[0]));
cout << p->words.size() << endl; // 3
deck1.erase(deck1.begin());
cout << p->words.size() << endl; // 0 <-- Why is size() 0 here?
p = &deck2[0];
cout << deck2[0].words.size() << endl; // 3 <-- and 3 here
cout << p->words.size() << endl; // <-- and 3 here!
getchar();
我以爲我開始明白移動語義,但我明白我出錯的地方,謝謝! – Jesse