Ошибка с несколькими определениями функции

Я пытаюсь переучить С ++ после прохождения вступительного курса несколько лет назад, и у меня возникают некоторые основные проблемы. Моя текущая проблема возникает при попытке использовать функцию друга. Вот мой код в 2 файлах.

Первый:

// fun.cpp

#include <iostream>
using namespace std;

class classA {
    friend void funct();
public:
    classA(int a=1,int b=2):propa(a),propb(b){cout<<"constructor\n";}
private:
    int propa;
    int propb;
    void outfun(){
        cout<<"propa="<<propa<<endl<<"propb="<<propb<<endl;
    }
};
void funct(){                     // ERROR HERE
    cout<<"enter funct"<<endl;
    classA tmp(1,2);
    tmp.outfun();
    cout<<"exit funct"<<endl;
}

Во-вторых:

// mainfile.cpp
#include <iostream>
#include "fun.cpp"
using namespace std;

int main(int nargin,char* varargin[]) {
    cout<<"call funct"<<endl;
    funct();
    cout<<"exit main"<<endl;
    return 0;
}

Я получаю ошибку "множественное определение` funct () '". Я использую неправильный синтаксис при объявлении его в качестве функции друга?

Ответы на вопрос(2)

Ваш ответ на вопрос