Jump to content
americopereira

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

Recommended Posts

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;}
};

Edited by americopereira

Share this post


Link to post
Share on other 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;}
};

Edited by americopereira

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.