Pregunta

Hecho este simple clase con MSVC ++ 6.0

class Strg
{
public:
    Strg(int max);
private:
    int _max;
};


Strg::Strg(int max)
{
  _max=max;
}

Me parece bien si lo uso en:

main()
{
  Strg mvar(10);
}

Pero ahora si lo uso en una otra clase:

class ok
{
public:
    Strg v(45);
};

Me sale error mensaje: error C2059: error de sintaxis: 'constante'

Podría decirme más, por favor?

No hay solución correcta

Otros consejos

En caso de ser:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

variables de miembros no estáticos que no tienen constructores por defecto (v), en este caso deben ser inicializados usando listas de inicialización . En funciones (como principal), por el otro lado se puede utilizar la sintaxis constructor regular.

Lo que el compilador se queja es que usted está tratando de proporcionar instrucciones sobre cómo crear una instancia del v tonelada miembro de la clase dentro de la definición de clase, lo cual no está permitido.

El lugar para v instantiate estaría dentro del contructor, o en la lista de inicialización del constructor. Por ejemplo:

Dentro de constructor:

class ok
{
public:
    Strg v;
    ok() {
        v = Strg(45);
    }
};

En la lista de inicialización:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

La forma correcta de hacerlo es la última (de lo contrario, v también requeriría un constructor por defecto y se inicializado dos veces).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top