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.

Cómo solucionar C3867 (sintaxis no estándar; use “&” para crear un puntero a miembro)

TODOS,

class Foo
{
public:
    void Func()
    {
        if (my_pointer == my_vector.at([my_vector.size() - 1]))
        {
        }
    }
    Bar *my_pointer;
    std::vector<Bar *> my_vector;
};

Obtuve un error:

error C3867: 'std::vector<Bar *,std::allocator<_Ty>>::at': sintaxis no estándar; use '&' para crear un puntero al miembro
error C2109: se requiere un subíndice de tipo de matriz o puntero

¿Qué estoy haciendo mal?

Básicamente quiero ver si mi puntero es el último elemento del vector…

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error se debe al uso incorrecto de corchetes cuadrados en la llamada a la función at(). En lugar de utilizar corchetes cuadrados para acceder al tamaño del vector, utilice paréntesis. Reemplace la línea con el error con lo siguiente:

    if( my_pointer == my_vector.at( my_vector.size() – 1 ) )

    Esto debería solucionar el error y permitirle comprobar si my_pointer es el último elemento en el vector utilizando la función at().

Comments are closed.