Errore nel dichiarare un typedef struct

di Anonimizzato24182 il
5 risposte
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
typedef struct Complesso{
double re;
double imm;
};
void leggicomplessi(Complesso&C){
cout<<"Inserisci il coefficiente reale:"<<endl;
cin>>C.re;
cout<<"Inserisci il coefficiente immaginario: "<<endl;
cin>>C.imm;
}
void stampacomplessi(Complesso&C){
cout<<" "<<C.re<<" "<<C.imm<<endl;
}
double modulo(Complesso&C){
return sqrt(C.re*C.re+C.imm*C.imm);
}
In questo codice sto creando una libreria
mi da errore nella definzione del typedef struct come posso ovviare?

5 Risposte

  • Confondi il nome della struttura con quella del nuovo tipo. La struttura può essere anonima, ma il tipo lo devi indicare.
    
    typedef struct  {
    	double re;
    	double imm;
    } Complesso;
    
  • Ho risolto il problema è che dichiaravo due volte lo struct perchè nel main includevo due librerie diverse dove in entrambe avevo dichiarato già lo struct ora mi sorge un nuovo problema
    cout<<"Ora componiamo il nostro vettore"<<endl;
    leggivettore(vett,dim);
    stampavettore(vett,dim);
    cout<<"Ora calcoliamo i moduli e li stampiamo sequenzialmente";
    for(int i=0;i<dim;i++){
    cout<<" "<<modulo(vett[i])<<endl;
    }
    cout<<"Ora ordiniamo i moduli in senso crescente se e' necessario"<<endl;
    bubblesort(vett,dim);
    )
    mi da errore qui cout<<" "<<modulo(vett)<<endl;
    mi dice errore [Error] no match for 'operator[]' (operand types are 'Vettore {aka Complesso}' and 'int')
    la funzione modulo l'ho definita così nella libreria
    double modulo(Complesso&C){
    return sqrt(C.re*C.re+C.imm*C.imm);
    }
  • Non ho capito

    1) se hai letto quello che ti ho scritto

    2) quale codice stai provando adesso
  • Sisi ho capito quello che mi hai detto ed ho risolto il codice che avevo mandato prima era un frammento di libreria che stavo formando per questo progetto ora mi da quest altro errore nel main del progetto
  • A parte che dovresti creare un thread diverso per ogni problema, adesso manca il codice completo di cui stiamo parlando. Che non è quello di prima.
Devi accedere o registrarti per scrivere nel forum
5 risposte