recreation of ex01

This commit is contained in:
starnakin 2023-07-12 02:45:13 +02:00
parent 55a7c73656
commit cfee0e2ec4
6 changed files with 64 additions and 48 deletions

View File

@ -1,25 +1,25 @@
CXX = c++ CXX = c++
CXXFLAGS = -std=c++98 -Wall -Wextra -Werror -g -O0 CPPFLAGS = -std=c++98 -Wall -Wextra -Werror -g
SRCDIR = src SRCDIR = src
OBJDIR = obj OBJDIR = obj
BINDIR = bin NAME = ex01
EXECUTABLE = zombie
SRCS = $(wildcard $(SRCDIR)/*.cpp) SRCS = $(wildcard $(SRCDIR)/*.cpp)
OBJS = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS)) OBJS = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRCS))
all: $(BINDIR)/$(EXECUTABLE) all: $(NAME)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@ mkdir -p obj
$(CXX) $(CPPFLAGS) -c $< -o $@
$(BINDIR)/$(EXECUTABLE): $(OBJS) $(NAME): $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@ $(CXX) $(CPPFLAGS) $^ -o $@
clean: clean:
rm -rf $(OBJDIR)/*.o rm -rf $(OBJDIR)/*.o
fclean: clean fclean: clean
rm -fr $(BINDIR)/$(EXECUTABLE) rm -fr $(NAME)
re: fclean all re: fclean all

Binary file not shown.

View File

@ -1,30 +1,40 @@
#include "Zombie.hpp" #include "./Zombie.hpp"
#include <string>
#include <iostream> #include <iostream>
#include <string>
Zombie::Zombie(std::string name)
{
this->name = name;
std::cout << this->name << ": " << "Zombie()" << std::endl;
}
Zombie::Zombie() Zombie::Zombie()
{ {
this->name = ""; std::cout << "Zombie()" << std::endl;
std::cout << this->name << ": " << "Zombie()" << std::endl; }
Zombie::Zombie(const std::string& name)
{
std::cout << "Zombie(" << name << ")" << std::endl;
this->_name = name;
}
Zombie::Zombie(const Zombie& src)
{
*this = src;
} }
Zombie::~Zombie() Zombie::~Zombie()
{ {
std::cout << this->name << ": " << "~Zombie()" << std::endl; std::cout << "~Zombie()" << std::endl;
} }
void Zombie::announce() const Zombie& Zombie::operator=(const Zombie& src)
{ {
std::cout << this->name << ": " << "BraiiiiiiinnnzzzZ..." << std::endl; this->_name = src._name;
return *this;
} }
void Zombie::setName(std::string name) void Zombie::announe()
{ {
this->name = name; std::cout << this->_name << ": BraiiiiiiinnnzzzZ..." << std::endl;
}
void Zombie::setName(const std::string &name)
{
this->_name = name;
} }

View File

@ -1,18 +1,22 @@
#pragma once
#include <string> #include <string>
class Zombie { class Zombie
{
private: private:
std::string name; std::string _name;
public: public:
Zombie(std::string name); Zombie(const Zombie& src);
Zombie(); Zombie();
Zombie(const std::string& name);
~Zombie(); ~Zombie();
void setName(std::string name); Zombie& operator=(const Zombie& src);
void announce(void) const;
void announe(void);
void setName(const std::string& name);
}; };
Zombie* zombieHorde(int N, std::string name); Zombie* zombieHorde(int N, std::string name);

View File

@ -2,12 +2,14 @@
int main() int main()
{ {
Zombie* jean; Zombie* jean = zombieHorde(2, "jean");
Zombie pierre("Pierre");
jean = new Zombie("jean");
jean->announce();
delete jean;
jean = zombieHorde(3, "jean");
delete[] jean; delete[] jean;
Zombie* bob = zombieHorde(-1, "bob");
if (bob == NULL)
return 1;
bob->announe();
delete[] bob;
return 0;
} }

View File

@ -1,15 +1,15 @@
#include "Zombie.hpp" #include "Zombie.hpp"
#include <cstddef> #include <string>
Zombie* zombieHorde(int N, std::string name) Zombie* zombieHorde(int N, std::string name)
{ {
size_t i;
Zombie *zombies;
if (0 > N) if (0 > N)
return (NULL); return NULL;
zombies = new Zombie[N]; Zombie* zombies = new Zombie[N];
for (i = 0; i < (size_t) N; i++) for (int i = 0; i < N; i++)
{
zombies[i].setName(name); zombies[i].setName(name);
return (zombies); zombies[i].announe();
}
return zombies;
} }