Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

AnaCal

alocaçao dinamica duvida

Mensagens Recomendadas

AnaCal

Criei varias instancias de uma classe (com varios metodos, entre eles o gettempoespera() ) e guardei as num vector

inst_cliente= new Cliente();										
                vector_Clientes.push_back(inst_cliente);			

so que ao tentar aceder aos valores guardados o programa da o seguinte erro 'debug assertion failed!' o meu codigo foi o seguinte

for(int i = 0; i <= vector_Clientes.size(); i++)
	cout << "os tempos de recolha sao " << vector_Clientes[i]->gettempoespera();

como posso aceder aos dados guardados no meu vector? os exemplos que encontrei no google eram deste tipo  :cheesygrin:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Nao analisei o teu codigo mais do que o AHA!

for(int i = 0; i <= vector_Clientes.size(); i++)
//               ^^ AHA! Isto nao e usual: talvez esteja aqui o erro ? ??
//               O usual e for (i = 0; i < limite; i++)


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Em vez do "<=" experimenta um simples "<".

O problema do "<=" e que vai aceder a um elemento a mais. Imagina que tens 2 elementos no vector: com "<=" o i vai ser 0, depois 1, e depois 2 (num total de 3 passagens no ciclo) e vai tentar aceder ao elemento vector_Clientes[2], que nao existe (os 2 que existem sao o vector_Clientes[0] e vector_Clientes[1])


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AnaCal

Saberia me dizer porque neste ciclo apenas é modificado o ultimo valor em vez de todos?  🤔

for(int i = 0; i < vector_Clientes.size(); i++){
	cout << "TEMPOS ANTERIORES " << vector_Clientes[i]->getnovotempoRecolha() << endl;
	vector_Clientes[i]->actualizatempoRecolha(1);
}

os meus metodos sao

void Cliente::actualizatempoRecolha(int n)
{
	this->novotempoRecolha = gettempoRecolha() - n;
}

int Cliente::getnovotempoRecolha()
{
	return this->novotempoRecolha;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

O que faz o teu gettempoRecolha()?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Isso é o getnovotempoRecolha(). Tens lá outra função que é gettempoRecolha().

EDIT: E qual e a diferença entre o teu novotempoRecolha e o tempoRecolha? Será que os novotempoRecolha já não são todos iguais a tempoRecolha - 1?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AnaCal

void Cliente::actualizatempoRecolha(int n)
{
	this->novotempoRecolha = novotempoRecolha - n;
}

int Cliente::getnovotempoRecolha()
{
	return this->novotempoRecolha;
}

void Cliente::settempoRecolha(int n)
{
	this->tempoRecolha=n;
}

int Cliente::gettempoRecolha()
{
	return this->tempoRecolha;
}

utilizo o metodo actualiza tempo de recolha como decremento da variavel

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Mas já alteraste? É que já apresentaste duas versões diferentes do código:

void Cliente::actualizatempoRecolha(int n)
        {
                this->novotempoRecolha = novotempoRecolha - n;
        }

void Cliente::actualizatempoRecolha(int n)
        {
                this->novotempoRecolha = gettempoRecolha() - n;
        }


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.