Ir para o conteúdo
americopereira

Ajuda em c++/clr a referência de objeto não foi definida como uma instância de um objecto

Mensagens Recomendadas

americopereira

Boas malta, necessito de ajuda quando mando executar a função inicializa dá o seguinte erro

"a referência de objeto não foi definida como uma instância de um objecto"

O que estou a fazer mal?

using namespace System;
using namespace System::Collections;
using namespace std;

ref class ecran_vendas{
private:
         ref struct botao{
                 int ecran;
                 int butaonumero;
                 int codigoArtigo;
                String^ nome;
                bool status=false;
         };

        array <botao^,2>^ ecran = gcnew array<botao^,2>(2,24) ;

public:

            void inicializa(){
                  for (int i = 0; i < 24; i++){
                         ecran[0,i]->status = false; // Erro logo na primeira atribuição
                         ecran[1,i]->status = false;
                 }

             }
           String^ getNomeBut(int ecr, int but){return ecran[ecr, but]->nome;}
           bool getButStatus(int ecr, int but){ return ecran[ecr, but]->status;}
};

Editado por americopereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
americopereira

Boas Pessoal, já descobri o motivo da erro mas ainda não percebi por completo.

pelo vistos eu estou a fazer uma atribuição de um valor para uma variável que ainda não tem memória atribuída.

resolvi o problema acrescentando esta linha de codigo "

ecran[0,i]=gcnew(botao);

" alguém me sabe explicar porquê?

É que para mim quando faço "

array <botao^,2>^ ecran = gcnew array<botao^,2>(2,24) ;

" já tenho a memória atribuída.

ref class ecran_vendas{
private:
ref struct botao{
int ecran;
int butaonumero;
int codigoArtigo;
String^ nome;
bool status=false;
};

array <botao^,2>^ ecran = gcnew array<botao^,2>(2,24) ;

public:

void inicializa(){
for (int i = 0; i < 24; i++){
ecran[0,i]=gcnew(botao);
ecran[0,i]->status = false; // Erro logo na primeira atribuição
ecran[1,i]->status = false;
}

}
String^ getNomeBut(int ecr, int but){return ecran[ecr, but]->nome;}
bool getButStatus(int ecr, int but){ return ecran[ecr, but]->status;}
};

Editado por americopereira

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.