title: Linker error: duplicate symbols for architecture x86_64
body: <p>I have a header1.h included in raster2d.h and then raster2d.h is included in io.cpp and in raster2d.cpp. When I compile I get the following linker error`</p>
  
  <pre><code>   g++ -g -I. -I/opt/local/include  -o raster2d.o -c raster2d.cpp
     g++ -g -I. -I/opt/local/include  -o stb.o -c stb.cpp
     g++ -g -I. -I/opt/local/include  -o io.o -c io.cpp
     g++ -o raster2d raster2d.o SimpleImage.o stb.o io.o  -L/opt/local/lib  
     duplicate symbol __ZN9Transform14multiplicationE6Matrix in:
         raster2d.o
         io.o
     duplicate symbol __ZN9Transform5scaleEP7Point2fff in:
         raster2d.o
         io.o
     duplicate symbol __ZN9Transform6rotateEP7Point2ff in:
         raster2d.o
         io.o
     duplicate symbol __ZN9Transform9translateEP7Point2fff in:
         raster2d.o
         io.o
     ld: 4 duplicate symbols for architecture x86_64
     clang: error: linker command failed with exit code 1 (use -v to see invocation)
     make: *** [raster2d] Error 1
  </code></pre>
  
  <p>Transform is a class in header.h
  Transform::translate Transform::scale &amp; Transform::rotate are three functions in header1.h</p>