fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <list>
  4. #include <string>
  5. #include <utility>
  6.  
  7. using namespace std;
  8.  
  9. #define NONCOPYABLE(clazz_) \
  10.   clazz_(clazz_ const&) = delete; \
  11.   clazz_& operator=(clazz_ const&) = delete
  12.  
  13. struct Person
  14. {
  15. string name;
  16. vector<Person*> freunde;
  17. };
  18.  
  19. struct Welt
  20. {
  21. list<Person> bewohner;
  22.  
  23. Welt(){}
  24. NONCOPYABLE(Welt);
  25.  
  26. Person* neuer_bewohner(string name);
  27. };
  28.  
  29. Person* Welt::neuer_bewohner(string name)
  30. {
  31. bewohner.emplace_back();
  32. Person* r = &bewohner.back();
  33. r->name = std::move(name);
  34. return r;
  35. }
  36.  
  37. void befreunde(Person* wen, Person* mit)
  38. {
  39. // TODO: ueberlegen, ob und wie man abfangen soll,
  40. // falls die zwei personen schon befreundet sind
  41. // oder ob wen==mit gilt.
  42. wen->freunde.push_back(mit);
  43. mit->freunde.push_back(wen);
  44. }
  45.  
  46. int main()
  47. {
  48. Welt w;
  49. Person* hans = w.neuer_bewohner("Hans Wurst");
  50. Person* daniel = w.neuer_bewohner("Daniel Kaese");
  51. befreunde(hans,daniel);
  52. }
  53.  
Success #stdin #stdout 0s 2956KB
stdin
Standard input is empty
stdout
Standard output is empty