Sto cominciando a imparare il c++, però ho subito incontrato dei problemi e mi è venuto il dubbio che questi problemi dipendano almeno in partte dal compilatore. io uso il compilatore gratuito djgpp.
il mio problema è il seguente:
// m1.cpp
class A{
public: makeAThing();
}
A::makeAthing() { }
//prog.cpp
#include "m1.cpp"
int main() {
A a;
a.makeAThing();
}
Quando compilo m1.cpp mi dà no errors. Quando compilo prog.cpp mi dà no errors. Ma quando linko mi dà "multiple definition of A::makeAThing(void)". Dove è l'errore? Anche perché sui manuali c'è la possibilità di separare la dichiarazione dall'implementazione ed è quello che io vorrei fare.
C'è qualche compilatore che permette di compilare il codice precedente?
Voi che compilatore usate?
-------------------------
p.s.
Segnalo che invece non mi dà errore il seguente esempio di programma, dove metto tutto il codice in un unico file:
class A {
public:
makeAThing();
};
A::makeAThing() { }; //funziona anche con istruzioni tra { e }
int main(){
A a;
a.makeAThing();
}
Anche il seguente codice viene dà un file exe funzionante:
// m1.cpp
class A {
public:
makeAThing() { }; //funziona anche con istruzioni tra { e }
};
// prog.cpp
#include "m1.cpp"
int main() {
A a;
a.makeAThing();
}