C++ でプログラムを作成しており、インクルードvector
型が必要ですHilo
--> vector<Hilo>
( Hilo
hilo の属性自体を変更する boost::thread を含むクラスです。) cpp でagregarHilo
。vector の作成で何が問題になっていますか? 私はこれらの方法でそれを作成しようとしました: 1.
Hilo * hil = new Hilo(this->contadorHilos,tiempo_vida);
vecHilos.push_back(hil);
または 2. (前述のように、ベクトルはagregarHilo
Operaciones.cpp のメソッドで作成されます。ここに完全なコードがあります) ありがとうございます。
//file: Hilo.h
#ifndef HILO_H
#define HILO_H1
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
#include <string>
using namespace std;
class Hilo{
private:
int id;
string mensaje;
int tiempo_vida;
boost::thread hilo;
public: void accion();
Hilo(int,int);
~Hilo();
void setId(int);
int getId() const;
void setTiempoVida(int);
int getTiempoVida() const;
string getMensaje() const;
};//endif
//file: Hilo.cpp
#include "Hilo.h"
#include <iostream>
Hilo::Hilo(int id,int tiempo_vida){
this->id=id;
this->tiempo_vida=tiempo_vida;
this->hilo=boost::thread(&Hilo::accion,this);}
Hilo::~Hilo(){}
void Hilo::accion(){
unsigned a=1;
boost::posix_time::seconds velocidad_(a);
while (this->tiempo_vida>=0){
stringstream sstm;
sstm<<"Hilo numero:"<<this->id <<" tiempo de vida restante:"<<(this->tiempo_vida--);
this->mensaje=sstm.str();
boost::this_thread::sleep(velocidad_);}
}
void Hilo::setId(int id){
this->id=id;}
int Hilo::getId() const{
return this->id;}
void Hilo::setTiempoVida(int tiempo_vida){
this->tiempo_vida=tiempo_vida;}
int Hilo::getTiempoVida() const{
return this->tiempo_vida;}
string Hilo::getMensaje() const{
return this->mensaje;}
//file: Operaciones.h
#ifndef OPERACIONES_H
#define OPERACIONES_H1
#include "Hilo.h"
#include <vector>
class Operaciones{
private:
int contadorHilos;
vector<Hilo> vecHilos;
public:
Operaciones();
void agregarHilo(int);
void verHilo(int);
};#endif
//file: Operaciones.cpp
#include "Operaciones.h"
Operaciones::Operaciones(){
this->contadorHilos=0;}
void Operaciones::agregarHilo(int tiempo_vida){
vecHilos.push_back(Hilo(this->contadorHilos,tiempo_vida);
this->contadorHilos++;
}
void Operaciones::verHilo(int hilo){} //en construccion
//file: Principal.cpp
#include <iostream>
#include <cstdlib>
#include "Operaciones.h"
using namespace std;
int main(){
bool run=true;
int opcion;
Operaciones oper;
system("clear");
while(run==true){
cout<<"APLICACION MULTI-HILO\nDigite alguna de las opciones\n1. Crear nuevo hilo\n2.Observar hilo\n3. Salir\n";
cin>>opcion;
switch(opcion){
case 1:
system("clear");
cout<<"Se va a crear un nuevo hilo\n";
cout<<"Digite el tiempo de vida del hilo(segundos)";
int tiempo;
cin>>tiempo;
oper.agregarHilo(tiempo);
cout<<"Se ha agregado correctamente";
break;
case 2:
system("clear");
cout<<"Se va a observar un hilo\n";
break;
case 3:
system("clear");
cout<<"Fin del programa, gracias\n";
run=false;
break;
default:
system("clear");
cout<<"La opcion que ingreso es incorrecta\n";
break;
}
sleep (1.1);
system("clear");
}
return 0;
}