Sto creando un semplice file UTIL.h che contiene la funzione aplusb (int, int) per il mio progetto C++. Tuttavia non posso compilare e il messaggio di errore riguarda la definizione multipla di `aplusb (int, int) '. Potresti aiutarmi a correggere l'errore o darmi qualche suggerimento?Definizione multipla di un errore di funzione, anche quando si usano le clausole di guardia #if
Allego qui il mio progetto per il vostro riferimento di dettaglio.
util.h File
#ifndef UTIL_H_
#define UTIL_H_
int aplusb(int a, int b) {
return a + b;
}
#endif /* UTIL_H_ */
ClassA.h File
#ifndef CLASSA_H_
#define CLASSA_H_
class ClassA {
public:
ClassA();
virtual ~ClassA();
private:
int sum;
};
#endif /* CLASSA_H_ */
File ClassA.cpp
#include "ClassA.h"
#include "UTIL.h"
ClassA::ClassA() {
// TODO Auto-generated constructor stub
sum = aplusb(3,5);
}
ClassA::~ClassA() {
// TODO Auto-generated destructor stub
}
ClassB.h File
#ifndef CLASSB_H_
#define CLASSB_H_
class ClassB {
public:
ClassB();
virtual ~ClassB();
private:
int sum;
};
#endif /* CLASSB_H_ */
File ClassB.cpp
messaggio di errore#include "ClassB.h"
#include "UTIL.h"
ClassB::ClassB() {
// TODO Auto-generated constructor stub
sum = aplusb(5,6);
}
ClassB::~ClassB() {
// TODO Auto-generated destructor stub
}
Compile
ClassB.o: In function `aplusb(int, int)':
/home/vtvan/Desktop/workspace/commonfunc/UTIL.h:11: multiple definition of `aplusb(int, int)'
ClassA.o:/home/vtvan/Desktop/workspace/commonfunc/UTIL.h:11: first defined here
collect2: error: ld returned 1 exit status
make: *** [commonfunc] Error 1
Sono curioso di sapere perché la seconda variante sarebbe "giusta", e la prima no. Quali sarebbero i problemi nell'integrare questa funzione? – JBL
@JBL davvero nulla, corretto. – ForEveR
Grazie a tutti, posso correggere l'errore. – andycandy