我得到"将值分配给结构数组 iin 时与'operator='不匹配C++

I get "no match for 'operator=' when assigning value to a struct array iin C++

本文关键字:时与 operator C++ 不匹配 iin 数组 结构 分配      更新时间:2023-10-16

我正在尝试从一个名为议程的文件中读取信息,并将其放入构造类型的persona*中,该信息在代码之后显示。

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) {}
};

我得到的错误是:

错误:'operator ='没有匹配(操作数类型是'persona'和'persona*')|

误差在'per [k] = arreglo上标记;'该部分是指角色结构

注意:候选人是:|注意:角色&amp;角色::操作员=(const persona&amp;)|注意:从" persona*"到'const persona&amp;'|

的参数1的已知转换。

Per和Arreglo均声称为全局角色*

这是一个指针。取价。或每个人必须是角色**

per[k] = *arreglo;

如果结构是非平凡

,您也可能需要实现操作员
Persona& operator=(const Persona& o) { ... }