PDA

Ver la versión completa : Vector dentro de un struct en una clase en c++



herc
24-04-2012, 01:17
Hola de nuevo!

Tenia una duda a la hora de declarar un árbol de structs dentro de una clase, la idea sería la de declarar el struct primero:


private:
struct {
int id;
vector <int> p(n);
...
};
...
public:
...

necesito declarar un vector de enteros con tamaño n, el problema es:

Si la informacion de n está en el programa main, ¿cómo puedo pasar ésta informacion a la clase para que el vector de mi struct tenga ese tamaño en concreto?

Gracias de antemano por la ayuda!

Markitos1024
24-04-2012, 19:16
Mira no te entiendo bien la pregunta, hablas de un arbol pero no lo veo...

Igual te respondo lo que entendi. Osea como tener un vector el cual solo trabaje en un rango.

Aqui una solucion sencilla sin usar excepciones para no complicarte, SOlo con una badera si es 1 hubo desvordamiento si es 0 no.


class miVector {
private:
v vector<int>;
int limite;
bool bandera = 0;
public:
miVector(int limite);
void push_v(int i, int j);
int get_v(int j);
void limpiarBandera(){ bandera = 0;};
getBandera(){return bandera;};
};

miVector::miVector(int limite){
this.limite = limite;
}

void miVector::push_v(int n, int j){

if (j <= limite) {v[j]= n;}
else { bandera = 1;}

}

int miVector::get_v(int j);{

if (j <= limite) return v[j];
bandera =1;
return 0;
}

Yo preferiria generar excepciones, pero por como encaras la pregunta no creo que estes viendo eso.

saludos

hystd
25-04-2012, 01:25
Si la informacion de n está en el programa main, ¿cómo puedo pasar ésta informacion a la clase para que el vector de mi struct tenga ese tamaño en concreto?

A través de un atributo en esa clase.

Te creas un atributo, y el valor de "n" lo asignas en el constructor. Así de simple.

Un saludo.

herc
25-04-2012, 15:08
Sl final he optado por otra manera de resolver el problema, si no nos han dado esas herramientas en las clases es porque sin ellas deberia poder resolverse

Gracias por vuestras respuestas ^^