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.

Acceda a una variable en una clase sin copiarla.

Me gustaría obtener acceso a los campos de una clase sin copiarla.

Tengo una clase que almacena dos variables (versión simplificada aquí).
En el método get_cutting_types compruebo si el usuario introduce true o false y devuelvo el objeto por referencia. Pero aquí tengo que usar =, lo que significa que los datos se copian.

¿Existe una manera directa de pasar un campo sin reasignación?

class joint
{
    std::vector<char> m_letters;
    std::vector<char> f_letters;

    void get_cutting_types(bool flag, std::vector<char>& letters) {
        if (flag) {
            letters= m_letters;
        } else {
            letters= f_letters;
        }
    }
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, se pueden utilizar los métodos getter/setter para acceder a los campos de la clase sin copiarlos. Aquí hay un ejemplo:

    “`c++
    class Joint
    {
    std::vector m_letters;
    std::vector
    f_letters;

    public:
    const std::vector& get_m_letters() const { return m_letters; }

    const std::vector<char>& get_f_letters() const { return f_letters; }
    
    void get_cutting_types(bool flag, std::vector<char>& letters)
    {
        if (flag) {
            letters = get_m_letters();
        } else {
            letters = get_f_letters();
        }
    }
    

    };
    “`

    Ahora se puede llamar a get_m_letters y get_f_letters para obtener una referencia directa a los campos de la clase sin copiarlos. Tenga en cuenta que los métodos devuelven una referencia const para evitar que el llamador modifique los campos directamente.

Comments are closed.