Systèmes2025TerminéDépôt privé
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   Zombie.cpp                                         :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: lkantzer <lkantzer@student.42.fr>          +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2025/12/12 13:31:50 by lkantzer          #+#    #+#             */
/*   Updated: 2025/12/15 09:02:22 by lkantzer         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */
Created : ouverture du dépôt · Updated : dernier commit

CPP Modules

Passer du C à l'objet, un module à la fois

Les modules C++ de 42, en C++98 strict : pile contre tas, référence contre pointeur, pointeurs sur fonctions membres.

C++98MakefilePointeurs sur membresRéférences
01
module
7
exercices
C++98
norme
Comment ça marche

Le module 01, exercice par exercice

Le module tourne autour d'une seule question : où vit l'objet, et qui le détruit. Chaque exercice l'attaque sous un angle différent.

ex00 · Zombie
Le même zombie créé de deux façons : newZombie le rend sur le tas et laisse l'appelant faire le delete, randomChump le pose sur la pile et le laisse mourir en sortant de la fonction.
ex01 · zombieHorde
N zombies alloués en un seul new[], nommés après coup par setName — puisqu'un tableau ne peut appeler que le constructeur par défaut.
ex02 · brain
Une chaîne, son adresse, un pointeur et une référence dessus : trois façons d'écrire la même adresse et la même valeur.
ex03 · Weapon
HumanA tient l'arme par référence, HumanB par pointeur. Changer le type de l'arme après coup se voit chez les deux : ils pointent la même.
ex04 · replace
Un sed de pauvre : le fichier est relu ligne à ligne et réécrit dans <fichier>.replace, en remplaçant s1 par s2 sans jamais utiliser std::string::replace.
ex05 · Karen
Quatre plaintes, quatre méthodes privées, et un tableau de pointeurs sur fonctions membres pour appeler la bonne à partir du niveau demandé.
ex06 · karenFilter
Le même filtre en switch, cette fois sans break : demander WARNING affiche warning puis error, et un niveau inconnu tombe dans le default.

Sept binaires distincts, jamais une bibliothèque commune : c'est le même sujet repris sept fois, pas un programme qui grossit.

En bref
  • 01C++98 imposé, compilé en -Wall -Wextra -Werror sur chaque exercice
  • 02Sept exercices rendus, un Makefile et un binaire par exercice
  • 03Un tableau de pointeurs sur fonctions membres à la place d'une chaîne de if
  • 04Le même filtre de logs réécrit en switch pour obtenir la cascade de niveaux
Le point dur

Référence ou pointeur, ce n'est pas un détail de style

HumanA reçoit son arme par référence : il en a forcément une, et elle ne peut plus changer d'identité. HumanB la tient par pointeur, parce qu'il peut très bien commencer sans arme — le choix du type dit la règle métier.