Linking Error whilst trying t compile Project on Mbed Studio

Hello, I am using the Mbed Studio for the first time, I am not familiar with C++ yet, but am with C. On Compilation I get the following linking error, any clues as to what could cause this. If I remove the local H or C++ library files the compile claims it cannot find the relevant classes. I cannot see how the multiple references are being created. The H files have the usual #ifndef _ then #define declarations. Thanks in advance.
Error: L6200E: Symbol _ma_fifo::_ma_fifo__sub_object() multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol MovingAverage::MovingAverage__sub_object(int) multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol MovingAverage::filter(float) multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol _ma_fifo::_ma_fifo() multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol _ma_fifo::free() multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol MovingAverage::MovingAverage(int) multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol _ma_fifo::get(float*) multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol _ma_fifo::put(float) multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Error: L6200E: Symbol _ma_fifo::available() multiply defined (by BUILD/NUCLEO_L476RG/ARMC6/main.o and BUILD/NUCLEO_L476RG/ARMC6/MovingAverage.o).
Not enough information to list the image map.
Finished: 1 information, 1 warning and 9 error messages.