Ir ao conteúdo
  • Cadastre-se

Criação de variáveis e objetos.


Diogo00

Posts recomendados

Boa tarde pessoal, 

 

Estou fazendo um código, onde eu gostaria de criar alguns objetos em tempo de execução, devido ao fato de não saber quantos irei criar,  tudo depende do usuário. Ja fiz alguns testes, mas quando crio o objeto dentro de uma estrutura de condição, ou uma função que seja, não consigo acessar os métodos depois fora da das estruturas, pois, os objetos ficam locais.

 

Declaração da classe:

using namespace std;
class Grafo
{
	int v; 
	list<int> *adj; 

public:
    Grafo(int v); 
	void adcAresta(int v1, int v2); 
    void dfs(int v);
};

Criando objeto e utilização posterior do método:

// Criando
if ()
{
 Grafo grafo (V);
}

//utilizando método.
grafo.adcAresta(1,2);

 

Alguém tem uma ideia de como melhorar isso ?

 

 

 

Link para o comentário
Compartilhar em outros sites

#include <iostream>
using namespace std;

class Foo {
    public:
        Foo() : bar(999) {}
        int getBar(){ return bar; }
        void setBar( const int valor ) { this->bar = valor; }
    private:
        int bar;
};


int main (){
    
    Foo* vetor;
    int n;
    
    if (true){
        cout << "Numero objetos?: ";
        cin >> n;
        vetor = new Foo [n];
    }
    
    for(int i = 0; i<n; i++){
        cout << "Foo " << i+1 << ": " << vetor[i].getBar() << endl;
    }
    
    delete[] vetor;
    
    cin.ignore();
    return 0;
}

memória dinâmica sobrevive a todos os escopos, continuará aí inclusive depois que seu programa termine, até você apaga-lo, por esse motivo é muito importante você liberar a memória com delete[] depois de ter usado new[] para reservar. Como podemos observar é só não perder a direção de memória onde esta o primeiro elemento, isso fazemos com o ponteiro Foo* vetor; logo reservamos a memória dentro do if, e como o ponteiro sim é anterior ao if não tem esse problema, mas lembre liberar o espaço antes de sair do seu programa. Com isso você pode passar esse ponteiro a qualquer função que seu vetor será a prova de escopos. >_<

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...