A collection of all C++ projects from 42, consisting of 10 different modules.
Instructions apply for all projects and exercises unless stated otherwis on a specific exercise.
- Makefiles must not relink.
- Code must be compiled with
c++
and the flags-Wall -Werror -Wextra -std=c++98 -pedantic
. - Class names must be in UpperCamelCase format, that is "ClassName.cpp/.hpp/.tpp".
- Output messages must be ended by a new-line character and displayed to the standard output.
- Almost everything on the standard library is allowed, however boost libraries, *printf(), *alloc() and free() are forbidden.
- The
using namespace <ns_name>
andfriend
keywords are forbidden. - Anything that requires to include the
<algorithm>
header is also forbidden, except on Module 08 and 09. - Memory leaks must be avoided.
- From Module 02 to 09, classes must be designed in the Orthodox Canonical Form, except when explicitely stated otherwise.
- Any function implementation put in a header file (except for function templates) are forbidden.
- Double inclusion must be avoided by using include guards.
Both CodeFactor and Codacy are used to measure the code quality of this
project, one important performance issue that I had was using
regular parameters instead of const references,
that is why most of the string parameters of this project are passed as
const std::string &str
instead of just std::string str
.