Create directories to host the build and binary files. This helps to keep the source control clean, as those directories are ignored in commits.
mkdir build bin
clang++ Image.cpp -std=c++17 -c -o ./build/Image.o
clang++ ImageProxy.cpp -std=c++17 -c -o ./build/ImageProxy.o
clang++ main.cpp ./build/Image.o ./build/ImageProxy.o -std=c++17 -o ./bin/proxy
./bin/proxy
Design Patterns: Elements of Reusable Object-Oriented Software