2017-12-10 8 views
0

私は、AGENDAと呼ばれるファイルから情報を読み込み、構造体型Persona *に配置しようとしています。 。私は "演算子= 'のための一致は、構造体配列に値を代入するときC + +

char arrk [120]; 
string dato; 
arch_g.open("AGENDA.TDAT",ios::in); 
//Persona* buffer; 
do 
{ 
    for (int k=0; k<tamano; k++) 
    { 
     arch_g.getline (arrk, 120, '\t'); 
     string dato (arrk); 
     arreglo->nombre=dato; 
     arreglo->apellido_p=dato; 
     arreglo->apellido_m=dato; 
     arreglo->dom.calle=dato; 
     int dato1 = (int)arrk; 
     arreglo->dom.numero=dato1; 
     arreglo->dom.interior=dato; 
     arreglo->dom.colonia=dato; 
     arreglo->dom.ciudad =dato; 
     arreglo->dom.estado=dato; 
     dato1 = (int)arrk; 
     arreglo->dom.codigo_postal=dato1; 
     arreglo->tel.local=dato; 
     arreglo->tel.clave_cd=dato; 

     per[k] = arreglo; 
    } 

} 

これはペルソナ

struct Persona 

{ 
bool isInitialized; 
std::string nombre; 
std::string apellido_p; 
std::string apellido_m; 

Domicilio dom; 
Telefono tel; 

Persona() : isInitialized(false) {} 

} 
struct Domicilio 
{ 
bool isInitialized; 
std::string calle; 
int numero; 
std::string interior; 
std::string colonia; 
std::string ciudad; 
std::string estado; 
int codigo_postal; 

Domicilio() : isInitialized(false) {} 
}; 

struct Telefono 
{ 
bool isInitialized; 
std::string local; 
std::string clave_cd; 

Telefono() : isInitialized(false) {} 
}; 

で、私が手にエラーがこれです:

エラー: '演算子=' の不一致(オペランドの型が* 'ペルソナ' と「ペルソナです')|

エラーは 'per [k] = arreglo;という行にマークされています。 ' この部分はPersona構造体を指します

注:候補は次のとおりです。 メモ:ペルソナ&ペルソナ::演算子=(constペルソナ&)| 注: 'Persona *'から 'const Persona &'に引数1の変換はありません。

perとarregloの両方がグローバルなPersona *として宣言されています。

+0

ある場合やペルソナである必要はありwhould **

per[k] = *arreglo; 

ごとにあなたはまた、オペレータを実装する必要があるかもしれませんスタックオーバーフローへようこそ! [MCVE](https://stackoverflow.com/help/mcve)を入力してください。 –

+0

'per'と' arreglo'は定義されていません。 MCVE –

+1

@TheAspiringHackerを投稿する[mcve]の短縮形のリンクには[mcve]を使用してください。 – iBug

答えて

0

これはポインタです。値を取る。構造体は、非自明な

Persona& operator=(const Persona& o) { ... } 
+0

あなたは正しいです、私はそれを更新しました –

関連する問題