我在 C++ 中制作一个程序,我想要包含vector
类型Hilo
--> vector<Hilo>
,(Hilo
是一个包含修改 hilo 属性本身的 boost::thread 的类。)。在文件中创建向量时出现错误:Operaciones。 cpp 中agregarHilo
。向量的创建有什么问题?我试过用这些方法创建它:1。
Hilo * hil = new Hilo(this->contadorHilos,tiempo_vida);
vecHilos.push_back(hil);
agregarHilo
或 2.(正如我之前所说,该向量是在 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;
}