feat(ex03): it works
This commit is contained in:
parent
8f7b9c3068
commit
28784b50f0
9 changed files with 153 additions and 0 deletions
1
ex03/.gitignore
vendored
Normal file
1
ex03/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
ex03
|
||||
8
ex03/HumanA.cpp
Normal file
8
ex03/HumanA.cpp
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "HumanA.hpp"
|
||||
#include <iostream>
|
||||
|
||||
HumanA::HumanA(std::string name, Weapon &weapon) : weapon(weapon), name(name) {}
|
||||
|
||||
void HumanA::attack(void) {
|
||||
std::cout << name << " attacks with their " << weapon.getType() << std::endl;
|
||||
}
|
||||
17
ex03/HumanA.hpp
Normal file
17
ex03/HumanA.hpp
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef HUMANA_HPP
|
||||
#define HUMANA_HPP
|
||||
|
||||
#include "Weapon.hpp"
|
||||
|
||||
class HumanA {
|
||||
public:
|
||||
HumanA(std::string name, Weapon &weapon);
|
||||
|
||||
void attack(void);
|
||||
|
||||
private:
|
||||
Weapon &weapon;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
#endif
|
||||
15
ex03/HumanB.cpp
Normal file
15
ex03/HumanB.cpp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include "HumanB.hpp"
|
||||
#include <iostream>
|
||||
|
||||
HumanB::HumanB(std::string name) : name(name) { this->weapon = NULL; }
|
||||
|
||||
void HumanB::setWeapon(Weapon &weapon) { this->weapon = &weapon; }
|
||||
|
||||
void HumanB::attack(void) {
|
||||
std::string weaponType;
|
||||
if (weapon != NULL)
|
||||
weaponType = weapon->getType();
|
||||
else
|
||||
weaponType = "hands";
|
||||
std::cout << name << " attacks with their " << weaponType << std::endl;
|
||||
}
|
||||
18
ex03/HumanB.hpp
Normal file
18
ex03/HumanB.hpp
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef HUMANB_HPP
|
||||
#define HUMANB_HPP
|
||||
|
||||
#include "Weapon.hpp"
|
||||
class HumanB {
|
||||
public:
|
||||
HumanB(std::string name);
|
||||
|
||||
void setWeapon(Weapon &weapon);
|
||||
|
||||
void attack(void);
|
||||
|
||||
private:
|
||||
Weapon *weapon;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
#endif
|
||||
41
ex03/Makefile
Normal file
41
ex03/Makefile
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
NAME = ex03
|
||||
ifeq ($(CPPFLAGS),)
|
||||
CPPFLAGS = -Wall -Wextra -Werror -std=c++98 -g
|
||||
endif
|
||||
ifeq ($(CXX),)
|
||||
CXX = c++
|
||||
endif
|
||||
# g++ is the default on 42 computers
|
||||
ifeq ($(CXX),g++)
|
||||
CXX = c++
|
||||
endif
|
||||
srcs = \
|
||||
Weapon.cpp \
|
||||
HumanA.cpp \
|
||||
HumanB.cpp \
|
||||
|
||||
main_objs = main.o $(srcs:.cpp=.o)
|
||||
all_objs = $(main_objs)
|
||||
deps = $(all_objs:.o=.d)
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
-include $(deps)
|
||||
|
||||
$(NAME): $(main_objs)
|
||||
$(CXX) $(CPPFLAGS) -o $@ $^
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -c $(CPPFLAGS) -o $*.o $*.cpp
|
||||
$(CXX) -MM $(CPPFLAGS) -MT $*.o $*.cpp > $*.d
|
||||
|
||||
clean:
|
||||
find . -name '*.o' -print -delete
|
||||
find . -name '*.d' -print -delete
|
||||
|
||||
fclean: clean
|
||||
rm -f $(NAME)
|
||||
|
||||
re:
|
||||
+make fclean
|
||||
+make all
|
||||
10
ex03/Weapon.cpp
Normal file
10
ex03/Weapon.cpp
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#include "Weapon.hpp"
|
||||
|
||||
Weapon::Weapon(std::string type) { this->type = type; }
|
||||
|
||||
const std::string &Weapon::getType(void) {
|
||||
const std::string &retvalue = type;
|
||||
return retvalue;
|
||||
}
|
||||
|
||||
void Weapon::setType(std::string type) { this->type = type; }
|
||||
17
ex03/Weapon.hpp
Normal file
17
ex03/Weapon.hpp
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef WEAPON_HPP
|
||||
#define WEAPON_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
class Weapon {
|
||||
public:
|
||||
Weapon(std::string type);
|
||||
|
||||
const std::string &getType(void);
|
||||
void setType(std::string type);
|
||||
|
||||
private:
|
||||
std::string type;
|
||||
};
|
||||
|
||||
#endif
|
||||
26
ex03/main.cpp
Normal file
26
ex03/main.cpp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#include "HumanA.hpp"
|
||||
#include "HumanB.hpp"
|
||||
#include "Weapon.hpp"
|
||||
|
||||
int main() {
|
||||
{
|
||||
Weapon club = Weapon("crude spiked club");
|
||||
HumanA bob("Bob", club);
|
||||
bob.attack();
|
||||
club.setType("some other type of club");
|
||||
bob.attack();
|
||||
}
|
||||
{
|
||||
Weapon club = Weapon("crude spiked club");
|
||||
HumanB jim("Jim");
|
||||
jim.setWeapon(club);
|
||||
jim.attack();
|
||||
club.setType("some other type of club");
|
||||
jim.attack();
|
||||
}
|
||||
{
|
||||
HumanB john("John");
|
||||
john.attack();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue