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.

Referencia indefinida a variable miembro estático inicializada con make_shared.

Al compilar con -std=c++14 el siguiente código:

#include

class A
{
public:
static constexpr int c = 0;
std::shared_ptr b;

A()     {
    b = std::make_shared<int> (c);
}

};

int main () {
A a;
return 0;
}

Da un error de enlazador “referencia no definida a `A::c'”, mientras que al utilizar “A::c” en otros contextos que no son “make_shared”, este error no ocurre. En particular, el siguiente código se compila y funciona correctamente:

class A
{
public:
static constexpr int c = 0;
std::shared_ptr b;

A()     {
    int cc = c;
    b = std::make_shared<int> (cc);
}

};

Tags:  , , ,

Answer

Comments are closed.