Hero.h:
#pragma once
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef enum gender {
Man, //男
Women //女
}gender_t;
class Hero
{
public:
Hero();
Hero(const string &name,const int &age,const gender_t &gender);
string getName() const;
int getAge() const;
gender getGender() const;
vector<Hero*> getFriends() const;
Hero* getLover() const;
string description() const;
void marry(Hero &other);
void divorce(Hero &other);
void addFriend(Hero &other);
void delFriend(Hero &other);
private:
string name;
int age;
gender_t gender;
Hero* lover;
vector <Hero*> friends;
};
Hero.cpp:
#include "Hero.h"
Hero::Hero()
{
name = "";
age = 0;
}
Hero::Hero(const string& name, const int& age, const gender_t& gender)
{
this->name = name;
this->age = age;
this->gender = gender;
}
string Hero::getName() const
{
return name;
}
int Hero::getAge() const
{
return age;
}
gender Hero::getGender() const
{
return gender;
}
vector<Hero*> Hero::getFriends() const
{
return friends;
}
Hero* Hero::getLover() const
{
return lover;
}
string Hero::description() const
{
stringstream ret;
ret << name << "-age:" << age << "-" << (gender==Man?"男":"女");
return ret.str();
}
void Hero::marry(Hero& other)
{
if (gender == other.gender) {
return;
}
this->lover = &other;
other.lover = this;
}
void Hero::divorce(Hero &other)
{
if (this->lover == NULL) {
return;
}
this->lover = NULL;
lover = NULL;
}
void Hero::addFriend(Hero& other)
{
friends.push_back(&other);
}
void Hero::delFriend(Hero& other)
{
for (auto is = friends.begin(); is != friends.end();) {
if (*is == &other) {
is = friends.erase(is);//返回下一个成员的"迭代器"
}
else {
is++;
}
}
}
main.cpp:
#include <iostream>
#include <vector>
#include <string>
#include "Hero.h"
using namespace std;
int main() {
Hero lhc("令狐冲", 25, Man);
Hero ryy("任盈盈", 26, Women);
Hero tbg("田伯光", 30, Man);
Hero yls("岳灵珊", 20, Women);
Hero cx("冲虚道长", 55, Man);
lhc.marry(yls);
Hero* who = lhc.getLover();
cout << lhc.getName() << "的配偶是:" << who->description() << endl;
cout << who->getName() << "的配偶是:" << who->getLover()->description() << endl;
cout << lhc.getName() << "离婚。" << endl;
lhc.divorce(yls);
if (lhc.getLover() == NULL) {
cout << lhc.getName() << "单身" << endl;
}
lhc.addFriend(tbg);
lhc.addFriend(cx);
auto friends = lhc.getFriends();
cout << lhc.getName() << "的朋友:" << endl;
for (int i = 0; i < friends.size(); i++) {
cout << friends[i]->description() << endl;
}
cout << lhc.getName() << "删除好友:" << tbg.getName() << endl;
lhc.delFriend(tbg);
friends = lhc.getFriends();
cout << lhc.getName() << "的朋友:" << endl;
for (int i = 0; i < friends.size(); i++) {
cout << friends[i]->description() << endl;
}
system("pause");
return 0;
}