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*>
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.