I am trying to overload the output and input stream operator but get this error when compiling
Error 1 error LNK2019: unresolved external symbol "class std::basic_istream > & __cdecl operator>>(class std::basic_istream
&,class Complex const &)" (??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@ABVComplex@@@Z) referenced in function _main C:\Users\owner\Documents\Personal\practice\main.obj practice
Basically I am trying to read a user input and parse it as real and imaginary numbers
Complex.h
#pragma once
#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(void);
    ~Complex(void);
    friend ostream& operator<<(ostream&, const Complex &C);
    friend istream& operator>>(istream&, const Complex &C);
    int real;
    int imaginary;
};
Complex.cpp
#include "Complex.h"
using namespace std;
Complex::Complex()
{
    real = 0;
    imaginary = 0;
}
Complex::~Complex(void)
{
}
ostream &operator<<(ostream &output, const Complex &C)
{
    char symbol = '+';
    if (C.imaginary < 0)
        symbol = '-';
    output << C.real << ' ' << symbol << ' ' << abs(C.imaginary) << 'i';
    return output;
}
istream &operator>>(istream &input, Complex &C)
{
    int tempReal;
    char symbol;
    char tempImaginaryFull[2];
    int tempImaginary;
    input >> tempReal >> symbol >> tempImaginaryFull;
    C.real = tempReal;
    tempImaginary = tempImaginaryFull[0];
    C.imaginary = tempImaginary;
    if( symbol == '-')
        C.imaginary *= -1;
    return input;
}
I don't really know what that error means even though I've tried looking around for it.
 
    