Próbuję ponownie nauczyć się języka C++ po odbyciu kursu wprowadzającego kilka lat temu i mam kilka podstawowych problemów. Mój obecny problem występuje podczas próby użycia funkcji znajomego. Oto mój kod w 2 plikach.Błąd z wieloma definicjami funkcji
pierwsze:
// 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;
}
drugie:
// 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;
}
Błąd jestem coraz to "wielokrotne definicja` FUNCT()". Czy używam niewłaściwej składni podczas deklarowania jej jako funkcji znajomego?
Również może pomóc niektórym linkerom w zawijaniu osłon nagłówków - wyszukiwanie w #ifndef –
@CarlNorum Miałem wrażenie, że błędy wielu definicji nie były kompilacją błędów linkerów. Ale może się mylę. –
Są, ale strażnik nagłówka nie ma z tym nic wspólnego. Cóż, chyba że robisz coś szalonego w swoich nagłówkach. –