Héctor Alonso Héctor Alonso - 1 month ago 17
C++ Question

conversion from `const char[2]' to non-scalar type `Persona' requested

Tengo un problema con este codigo en Dev-C++ 4.9.9.2, intentando hacer una lista me arroja este error:

conversion from `const char[2]' to non-scalar type `Persona' requested


Y este es el codigo que tengo:

#include<iostream>
#include<string>
#include<iomanip>

using namespace std;
struct Persona

{
string Nombre;
string NumeroTelefono;
Persona *sigDireccion;
};

void mostrar(Persona *);

int main(){
Persona p1=("a","1");
Persona p2=("b","2");
Persona p3=("c","3");
Persona *primera;
primera=&p1;
p1.sigDireccion=&p2;
p2.sigDireccion=&p3;
p3.sigDireccion=NULL;
mostrar(primera);
return 0;}

void mostrar(Persona *contenido)

{
while(contenido!=NULL){
cout<<endl<<setiosflags(ios::left)
<<setw(30)<<contenido->Nombre
<<setw(20)<<contenido->NumeroTelefono;
contenido=contenido->sigDireccion;
}
}


Ya intente hacer el cambio con

Persona* p1=("a","1");


Pero me sigue marcando el error en main lo compilo y guardo en .cpp
Como soluciono esa parte?

Answer Source

The line

Persona p1=("a","1");

is equivalent to:

Persona p1="1";

because of the parenthesis and the comma operator. That explains the compiler error. The LHS is an object of type Persona and the RHS is of type const char[2].

What you need to use is:

Persona p1("a","1");

or

Persona p1={"a","1"};