Inicialisador de una clase

El problema es el siguiente tengo dos clases clase1 y clase2.
clase2 tiene entre sus atributos un atributo de tipo clase1 pero este atributo es un vector.
Ejemplo
clase1 vector[n];
Por cierto no se si esto esta permitido.
El caso es que cuando trato de inicializar el vector en el constructor de clase2 me sale el siguiente error
cannot convert int to vector[4]
el constructor usado es más o menos algo así
clase2::clase2(int, int, int):vector(int,int),clase1(int, int)
Ya que la clase2 tiene un atributo de tipo int y uno de tipo clase1 la cual cuenta con 2 atributos int.
Este es esencialmente mi problema no se si es entendible o si alguien me puede colaborar.
Gracias de antemano
Respuesta
1
He estado mirando tu problema y he creado un poco de código que supongo sera muy parecido al tuyo:
class CClaseA
{
public:
CClaseA(int a1=0,int a2=4)
{
m_a1=a1;
m_a2=a2;
}
int m_a1;
int m_a2;
};
class CClaseB
{
public:
CClaseB(int b,int a1,int a2):m_obA(a1,a2),m_b(b)
{
}
int m_b;
CClaseA m_obA[4];
};
Al compilar da como resultado:
>> Error C2536: 'CClaseB::m_obA' : cannot specify explicit initializer for arrays
Mirando en la ayuda del msdn library las descripción del error es tal que así:
>>Compiler Error C2536
'identifier1::identifier2' : cannot specify explicit initializer for arrays
>>The specified member of a class, structure, or union could not be initialized.
>>This error can be caused if a constructor is not available to initialize one or more members of an array. If the size of the array is greater than the number of initializers, then a default constructor must be defined.
>>Alternatively, this error can be caused by declaring a nonstatic array with the const specifier. This kind of array cannot be explicitly initialized.
En principio parece que lo que intentas hacer no es posible así que tendrás que inicializar tu vector dentro del constructor de CClaseB con los datos a1 y a2 pasados como parámetros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas