Why do you have the following line (complx.cpp line 4) inside the implementation of your destructor?

complx complx::operator+ (const complx& c) const

It looks to be an incomplete function definition in the wrong place. That should be causing compile errors. I can't see that causing the linker error you're getting, but I've seen stranger things happen.