Ich versuche C++ nach einem Einführungskurs vor ein paar Jahren neu zu lernen und ich habe einige grundlegende Probleme. Mein aktuelles Problem tritt auf, wenn ich versuche, eine Friend-Funktion zu verwenden. Hier ist mein Code in 2 Dateien.Fehler mit mehreren Definitionen der Funktion
Erstens:
// 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;
}
Zweitens:
// 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;
}
Der Fehler, den ich bekommen habe ist, "multiple Definition von` Funkt() '". Verwende ich die falsche Syntax, wenn ich sie als Friend-Funktion deklariere?
Auch kann es mit einigen Linkern helfen, Header Guard zu wickeln - Suche auf #ifndef –
@CarlNorum Ich hatte den Eindruck, dass mehrere Definitionsfehler Linker Fehler nicht Kompilierung waren. Aber vielleicht irre ich mich. –
Sie sind, aber Header-Wächter haben damit nichts zu tun. Nun, es sei denn, Sie machen etwas verrücktes in Ihren Kopfzeilen. –