Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

raphaelframos

Vetores + ponteiros

Recommended Posts

Bom dia!
Sou novo no C++ e estou passando por um problema aparentemente simples, mas que não consigo identificar o que fazer. Eu possuo uma classe que contém um vector de objetos. Em outra classe, eu recupero esse vector e tento alterar um atributo de um objeto dele, ae está o problema, o valor não é alterado na memória, os gets funcionam mas o set não. Acredito que eu não esteja utilizando o ponteiro corretamente, mas não consegui resolver. Obrigado.
LinhaSimplex *ponteiroLinhaSimplex;
	for (unsigned int i = 0; i < getTabela().size(); i++) {
		ponteiroLinhaSimplex = &(getTabela()[i]);
		string texto = ponteiroLinhaSimplex->getSinalDaOperacao();
		string sinal = "<";
		if (utils.isSinal(texto, sinal)) {
			ponteiroLinhaSimplex->setVariavelDeFolga(true);
			ponteiroLinhaSimplex->setVariavelArtificial(false);
	}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

getTabela() tem que retornar o endereço do objeto e não o vetor.

getTabela(int position)

{

return tabela;

}

 

Mas neste caso o vetor tabela é um vetor de endereços (ponteiro).

Exemplo:

 



class Foo{
	public:
		int a, b;

	Foo(int a, int b)
	{
		this->a = a;
		this->b = b;
	}
};

class Bar{
	
	private:
		Foo *tabelas[10];

	public: void setTabela(Foo* f, int position)
	{
		this->tabelas[position] = f;
	}

	public: Foo* getTabela(int position)
	{
		return this->tabelas[position];
	}
}bar;

#include <iostream>

using namespace std;

int main()
{
	Foo *f;
	for (int i = 0; i < 10; i++)
		bar.setTabela(new Foo(i+1, i+2), i);

	//Alterando o conteúdo do objeto que está na posição 2
	f = bar.getTabela(2);
	f->a = 100;
	f->b = 200;

	//Mostrando os valores
	for (int i = 0; i < 10; i++)
	{
		f = bar.getTabela(i);
		cout << "a: " << f->a << " b: " << f->b << endl;
	}
	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.