Estoy haciendo un programa para que almacene los datos de un Objeto Vol, pero me da un error al crear el Vector que almacena objetos de tipo Vol. Alguien me podria decir donde esta el fallo? La clase Vol la tengo declarada con sus atributos.
Error: 'Vol' was not declared in this scope
class ArrayQueue{
private:
int MAX_QUEUE =100;
std::vector<Vol> data = std::vector<Vol>(100); ----> Aqui salta el error
int front; // apunta al primer element de la cua
int rear; // apunta al darrer element de la cua
public:
ArrayQueue(); // inicialitza una cua, buida
bool empty (); // indica si la cua és buida
bool full (); // indica si la cua és plena
};
#endif
¿Tienes declarado Vol antes de ArrayQueue?
A que te refieres con que tengo Vol declarado antes que ArrayQueue? Perdona pero soy nuevo en C++ y no tengo mucha idea :-(
Antes de usar cualquier cosa, c++ debe saber qur existe. Igual que declaras las variables antes de usarlas
int a;
a = 3;
los tipos también deben existir antes de usarlos
class Vol {
// ...
};
class ArrayQueue {
private:
int MAX_QUEUE =100;
std::vector<Vol> data = std::vector<Vol>(100);
// ...
};
Sisi, tengo declarada la clase Vol con el .h y el .cpp, pero igualmente me da error. No entiendo que es lo que falla...
el .h
#ifndef VOL_H
#define VOL_H
#include<iostream>
using namespace std;
#include "ArrayQueue.h"
class Vol {
public:
Vol(std::string , std::string, std::string, std::string, std::string, std::string);
void setcodi (int codi);
void setnumVol (int numVol);
void sethSortida (int hSortida);
void sethArribada (int hArribada);
void setcodiSortida (int codiSotida);
void setcodiArribada (int codiArribada);
string getcodi ();
int getnumVol();
int gethSortida();
int gethArribada();
int getcodiSortida();
string getcodiArribada();
private:
string codi;
string numVol;
string hSortida;
string hArribada;
string codiSortida;
string codiArribada;
};
#endif /* VOL_H */
-----------------------------------------------------------------------------------------------
y el .cpp
#include "Vol.h"
#include <iostream>
#include <cmath>
using namespace std;
Vol::Vol (const Vol& orig) {
}
Vol::Vol(std::string _codi, std::string _numVol, std::string _hSortida, std::string _hArribada, std::string _codiSortida, std::string _codiArribada)
{
codi = _codi;
numVol = _numVol;
hSortida = _hSortida;
hArribada = _hArribada;
codiSortida = _codiSortida;
codiArribada = _codiArribada;
}
He aquí el fallo.
En vol.h, está el include ArrayQueue.h. Esto te incrusta el fuente de la clase que te lanza el error, la línea que has marcado en tu primer post, y por tanto aparece el uso del tipo de dato Vol antes de su declaración.
¿De todas formas haces uso de la clase ArrayQueue dentro de Vol?
Si no la vas a usar deberías borrar ese include.
Si la vas a usar deberías pensar en crear un tipo de dato común a las dos clases para evitar que se referencien mutuamente.
Eso era! Muchisimas gracias!
De res, home!