Vraptor Postado Abril 25, 2006 Denunciar Share Postado Abril 25, 2006 E ai pessoal.Estou penando para trabalhar com matrizes.Vejam bem:Tenho uma classe e sua propriedade tem de ser uma matriz.class Cartela_Montada{ public: AnsiString Monta_Dezenas ( ); bool Verifica_Igualdade ( AnsiString ); bool Verifica_Linhas ( ); bool Verifica_Colunas ( ); void Inclue_Cartelas ( ); void Limpa ( ); private: vector<AnsiString> mtDezenasMontadas; vector<AnsiString>::iterator PonteiroVetor;};Cartela_Montada *Cartela;Quando vou trabalhar com a matriz tenho a menssagem de erro:Access violation at address..Read of address 00000010.Qualquer referência que faço a esse vetor dá pau.for ( PonteiroVetor = mtDezenasMontadas.begin() ; PonteiroVetor != mtDezenasMontadas.end() ; PonteiroVetor++ )...Tilt !!outra..for ( unsigned int Ponteiro = 0 ; Ponteiro < mtDezenasMontadas.size() ; Ponteiro++ )...Tilt !!Outra estrutura.{ public: AnsiString Monta_Dezenas ( ); bool Verifica_Igualdade ( AnsiString ); bool Verifica_Linhas ( ); bool Verifica_Colunas ( ); void Inclue_Cartelas ( ); void Limpa ( ); private: struct Dados { AnsiString Elemento; } mtDezenasMontadas[50]};...... if ( mtDezenasMontadas[ Ponteiro ].Elemento == " " ) ...Tilt.Não sei porque está dando esse erro de memória.Por favor alguém poderia dar uma mãozinha.Abraços, Daniel.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 25, 2006 Denunciar Share Postado Abril 25, 2006 Não estaria faltando inicializar os objetos do vetor? Ou seja, criar os objetos antes de tentar acessá-los?Veja se o seguinte exemplo funciona aí:#include <iostream> #include <stdlib.h> #include <string> #include <vector> using namespace std; int main() { vector<string> palavras; vector<string>::iterator palavra; palavras.push_back(string("isto")); palavras.push_back(string("é")); palavras.push_back(string("um")); palavras.push_back(string("teste!")); for ( palavra = palavras.begin(); palavra != palavras.end(); palavra++ ) { cout << *palavra << endl; } system("pause"); }E onde você arrumou essa AnsiString? Não achei aqui no Dev-C++, por isso fiz com strings normais de C++.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Abril 26, 2006 Autor Denunciar Share Postado Abril 26, 2006 E ai Graymalkin.AnsiString é um tipo de string criado para o ambiente Buider da Borland.Possui métodos bem semelhantes a classe string da STL. AnsiString Monta_Dezenas ( );Este método cria uma dezena aleatória e a retorna convertida para um tipo AnsiString.bool Verifica_Igualdade ( AnsiString );Este verifica se existe alguma dezena dentro do vetor ou matriz igual a que foi gerada,se for true é que a inclusão da nova dezena foi feita com sucesso.E também é ai que a porca torce o rabo !!Logo posto o resultado de sua sujestão.Abraços, Daniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Abril 26, 2006 Autor Denunciar Share Postado Abril 26, 2006 Isso é para pirar..devia ter ficado no VB.....Veja bem:Tentei verificar a existencia de algum elemento dentro do vetor e ele já dá o erro:if (mtDezenasMontadas.size() == 0 ) ShowMessage(" Este vetor está com vazio"); else ShowMessage("Este vetor não está vázio !");//----Outra tentativa.Tentei fazer a inclusão logo na primeira dezena montada:mtDezenasMontadas.push_back( AnsiString( "01" ) );Infelizmente o mesmo erro.Se for alguma coisa errada com meu código vou postar aqui.Abraços, agradeço a colaboração.Daniel. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vraptor Postado Abril 27, 2006 Autor Denunciar Share Postado Abril 27, 2006 Cara achei o pepino. PARECE BRINCADEIRA !!! <_< É a tal falta de pratica no ambiente. :( No Builder quando é instanciado um Form este é referênciado... Classe * Objeto.Acesso:Objeto->Componente->Propriedades = ......... //JANELA, COMPONENTES GRÁFICOS E ETC....Segui a mesma lôgica para criar meu objeto.Ou seja.Objeto->Método().Acontece que quando tento manipular um dado membro "DENTRO DE UMA FUNÇÃO MEMBRO " ele dá o tal erro de acesso violado.. :blink: :huh: Agora a noite que os cabelos tinhão parado de cair.. :D instânciei o Ojeto normalmente sem referência-lo.Classe Objeto.Acesso:Objeto.Método().Tudo a mil maravilhas. :rolleyes: Não sei o porque disto, se voçê tiver alguma dica fico muito agradecido. :ph34r: Abraços a todos, Daniel. ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 27, 2006 Denunciar Share Postado Abril 27, 2006 Não sei se entendi bem qual foi a sua solução, mas quando você declara um objeto assim...Classe *Objeto; ... você tem que utilizar o operador -> para fazer referência aos membros. Já quando é... Class Objeto;... você tem que utilizar o ponto (.) mesmo. Mas, geralmente, o compilador te avisa sobre isso.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Vraptor
E ai pessoal.
Estou penando para trabalhar com matrizes.
Vejam bem:
Tenho uma classe e sua propriedade tem de ser uma matriz.
class Cartela_Montada
{
public:
AnsiString Monta_Dezenas ( );
bool Verifica_Igualdade ( AnsiString );
bool Verifica_Linhas ( );
bool Verifica_Colunas ( );
void Inclue_Cartelas ( );
void Limpa ( );
private:
vector<AnsiString> mtDezenasMontadas;
vector<AnsiString>::iterator PonteiroVetor;
};
Cartela_Montada *Cartela;
Quando vou trabalhar com a matriz tenho a menssagem de erro:
Access violation at address..
Read of address 00000010.
Qualquer referência que faço a esse vetor dá pau.
for ( PonteiroVetor = mtDezenasMontadas.begin() ;
PonteiroVetor != mtDezenasMontadas.end() ;
PonteiroVetor++ )...Tilt !!
outra..
for ( unsigned int Ponteiro = 0 ;
Ponteiro < mtDezenasMontadas.size() ;
Ponteiro++ )...Tilt !!
Outra estrutura.
{
public:
AnsiString Monta_Dezenas ( );
bool Verifica_Igualdade ( AnsiString );
bool Verifica_Linhas ( );
bool Verifica_Colunas ( );
void Inclue_Cartelas ( );
void Limpa ( );
private:
struct Dados
{
AnsiString Elemento;
} mtDezenasMontadas[50]
};
...
...
if ( mtDezenasMontadas[ Ponteiro ].Elemento == " " )
...Tilt.
Não sei porque está dando esse erro de memória.
Por favor alguém poderia dar uma mãozinha.
Abraços, Daniel..
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.