es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enlazando diferentes clases en archivos diferentes – símbolo(s) no encontrado(s) para la arquitectura x86_64.

Estoy intentando usar “UserAccType” en “UserAccountListType”, pero el código sigue dándome este error: símbolo(s) no encontrado(s) para la arquitectura x86_64. He intentado usar una declaración anticipada y me dio otro error: “el campo tiene un tipo incompleto”. ¿Cómo puedo solucionar este problema? Gracias de antemano.

Aquí hay una parte del código:

“`cpp
//UserAccountListType.h
#ifndef USERACCOUNTLISTTYPE_H
#define USERACCOUNTLISTTYPE_H
#include
class UserAccType;
class UserAccountNode;
class UserAccountListType
{
private:
UserAccountNode *first;
UserAccountNode *last;
int counter;

public:
UserAccountListType()
{

    first = last = NULL;
    counter = 0;
}
void destroyList();
void print() const;
void insertUserAccount(const UserAccType newItem);
void deleteUserAccount(std::string ud);
void printInfoOfUserId(std::string userId);
bool isUserIdExist(std::string ud);
~UserAccountListType()
{
    destroyList();
}

};
#endif

//UserAccType.h

#include
#ifndef USERACCTYPE_H
#define USERACCTYPE_H
class UserAccType
{
private:
std::string userId;
std::string password;
std::string firstName;
std::string lastName;
std::string encryptedPassword;

public:
UserAccType(std::string userId = “”, std::string password = “”, std::string firstName = “”, std::string lastName = “”)
{
this->firstName = firstName;
this->lastName = lastName;
this->password = password;
this->userId = userId;
}

void setUserId(std::string);
void setpassword(std::string);
void setFirstName(std::string);
void setLastName(std::string);
std::string getUserId();
bool isCompleteUserACC();
std::string encryptPassword(std::string);
void printUserInfo();
bool isValidPassword(std::string Password);

};
#endif
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que el compilador no puede encontrar la definición de la clase UserAccType cuando se utiliza en la clase UserAccountListType. Esto se puede resolver incluyendo el archivo de encabezado para UserAccType en el archivo de encabezado de UserAccountListType. Para hacer esto, agregue #include "UserAccType.h" en la parte superior del archivo UserAccountListType.h, de la siguiente manera:

    //UserAccountListType.h
    #ifndef USERACCOUNTLISTTYPE_H
    #define USERACCOUNTLISTTYPE_H
    #include <iostream>
    #include "UserAccType.h" // se agregó la declaración de inclusión
    class UserAccountNode;
    class UserAccountListType
    {
    ...
    

    De esta manera, la clase UserAccType estará correctamente definida y visible para el compilador cuando se utilice en UserAccountListType.

    Si esto aún no resuelve el problema y persiste el error “el campo tiene un tipo incompleto”, asegúrese de que la protección de encabezado en UserAccType.h esté correctamente definida y que todos los encabezados necesarios para UserAccType estén incluidos.

    Además, asegúrese de que cualquier definición de funciones miembro de UserAccType se encuentren en un archivo .cpp separado y que el archivo esté vinculado con el archivo fuente que utiliza UserAccType en la configuración de construcción del proyecto.

Comments are closed.