使用 Qt 创建器时出错:"multiple definition" "first defined here"



我有问题。在我的QT项目中,我有一个错误。TT说:

雌激素的多重定义

我认为这是因为我使用的" #includes"太多了,但是我不知道该如何解决。

这是我的程序:

struct.h

 #ifndef STRUCT_H
    #define STRUCT_H
    #include <stdio.h>
    #include <string>
    struct Circulo{
        std::string nombre;
        int capacidad;
        int statusMujer[4];
        int hijos[4];
    };
    struct Circulo estructura[30];
    #endif // STRUCT_H

logica.h

 #ifndef LOGICA_H
 #define LOGICA_H
#include <iostream>
void madresStatusCodificados(std::string , int , int[]);
void ListadoDeCirculos(int, int , std::string []);
std::string CirculoMayorCapacidad(int );
int NinnosEnCirculosconStatus(int , int );
void Listado(int);
#endif // LOGICA_H

Interfaz.cpp

#include <Interfaz/Interfaz.h>
#include <Logica/Defecto.h>
#include <Interfaz/Menu.h>
#include <Logica/Struct.h>
#include <iostream>
using namespace std;
 void Principal(){
                  cin>>estructura[i].statusMujer[3];
                  cout<<"Escriba la cantidad de hijos con madres desconocidas"<<endl;
                  cin>>estructura[i].hijos[3];
                  i++;
              }else{
                  break;
              }
 }
}

logica.cpp

#include <iostream>
using namespace std;
//#include <Logica/Logica.h>
#include <Logica/Struct.h>
void madresStatusCodificados(string t,  int h , int k[]){
for(int i=0;i<h;i++){
    if(estructura[i].nombre==t){
       k[0]=estructura[i].statusMujer[0];
       k[1]=estructura[i].statusMujer[1];
       k[2]=estructura[i].statusMujer[2];
       k[3]=estructura[i].statusMujer[3];
    }
   }
}
void ListadoDeCirculos(int g,int u,string h[]){
    for(int i=0;i<u;i++){
        if(estructura[i].statusMujer[g-1]!=0)
        h[i]=estructura[i].nombre;
    }
    }

string CirculoMayorCapacidad(int k){
    int n=-1;
    string l;
    for(int i=0;i<k;i++){
        if(estructura[i].capacidad>n){
            n=estructura[i].capacidad;
            l=estructura[i].nombre;
        }
    }
    return l;
}
int NinnosEnCirculosconStatus(int a,int b){
    int h=0;
for(int i=0;i<b;i++){
    h=h+estructura[i].hijos[a-1];
}
return h;
}

void Listado(int y){
    for(int i=0;i<y;i++){
        cout<<"NOMBRE DEL CIRCULO    CAPACIDAD  Madres solteras Madres trabajadoras Madres caso social Madres desconocidas  "<<endl;
       cout<<estructura[i].nombre<<""<<estructura[i].capacidad<<estructura[i].statusMujer[0]<<estructura[i].statusMujer[1]<<estructura[i].statusMujer[2]<<estructura[i].statusMujer[3]<<endl;
    }
}

我遇到了这个错误:错误

您已在多个文件中定义了一个名为" extructura"的变量,该错误告诉您它是在struct.h中首次定义的。

struct Circulo estructura[30];

您有另一个定义的文件defecto.h或defecto.h

包含的文件

在您选择的CPP文件中移动estructura的定义,然后在需要的任何地方将其声明为extern。您可以在C 中省略struct关键字。

在struct.cpp文件中:

#include "Struct.h"
Circulo estructura[30];

在您的logica.cpp和Interfaz.cpp文件中:

#include "Struct.h"
extern Circulo estructura[30];

这是您问题的漫长而详细的解释。

最新更新