以下のプログラムでは、文字列が空のストアに追加されます。次に、このストア要素のアドレスがポインタ 's1' に格納されます。次に、別の文字列が追加され、元の要素へのポインターが何らかの形で失敗します。
#include <iostream>
#include <string>
#include <vector>
class store2
{
public:
void add(std::string s) {words.push_back(s); last_added2 = &words.at(words.size() - 1);}
std::string* last_added() {return last_added2;}
private:
std::string* last_added2;
std::vector<std::string> words;
};
void main()
{
store2 store;
store.add("one");
std::string* s1 = store.last_added();
std::cout<<*s1<<std::endl;
store.add("two");
std::cout<<*s1<<std::endl; // crash
}