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.

Error de enlace C++ utilizando vectores estáticos. Ejemplo de forma.

Tengo un error de enlace en este código. ¿Puede alguien resolver este problema y explicar por qué sucede?

Archivo de encabezado

#pragma once

#include <iostream>
#include <vector>

class Shape
{
public:
    static void test_shapes();

    // estática porque cada forma creada se agrega a esta lista
    static std::vector<shape*> _shapes;
};

Archivo de origen
“`
#include "Shape.h"

void Shape::test_shapes()
{
_shapes.size();
}
“`</shape*>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás obteniendo un error de enlace porque has declarado el vector _shapes en el archivo de encabezado, pero no lo has definido en el archivo fuente. Para solucionar esto, necesitas agregar la siguiente línea al archivo fuente:


    std::vector<Shape*> Shape::_shapes;

    Esto definirá el vector _shapes, lo que permitirá al compilador vincular el código correctamente.

Comments are closed.