Como encapsular matriz multidimensional? [RESOLVIDO]

1. Como encapsular matriz multidimensional? [RESOLVIDO]

Lucas Ribeiro
eunix

(usa Debian)

Enviado em 04/02/2016 - 13:24h

Oi povo,
estou aprendendo a usar classes em C++ e me deparei com uma discrepância: eis abaixo...

O código está em https://gist.githubusercontent.com/lucasseribeiro/fd2ec93d27734526da55/raw/5127b6bddcaa0df2e87bf9513...

Em acesso private, declarei a variável "string receita[9][9];".
Abri o acesso public com o construtor "Precificado(){ ...";
e me pus a encapsular minha variável private: com entrada de valor
 void def_receita( int x, int y, string valor ) { receita[x][y] = valor; }; 
e saída de valor
 string obt_receita( int x, int y, string valor ) { return( receita[x][y] ); }; 
A função obt_receita() desce macio e reanima...

Agora, def_refeita(), olha o tamanho do esculacho que o g++ me deu!!!
https://gist.githubusercontent.com/lucasseribeiro/d1f59784ace879184f54/raw/448bf3b0c9eb0af127f71dc39...

Eu fiz umas modificações nos códigos pra enfatizar apenas o problema. Algum erro também pode ser por isso, mas me avisem.

Grato
Lucas Ribeiro


  


2. Re: Como encapsular matriz multidimensional? [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 04/02/2016 - 15:03h

eunix escreveu:

Oi povo,
estou aprendendo a usar classes em C++ e me deparei com uma discrepância: eis abaixo...

O código está em https://gist.githubusercontent.com/lucasseribeiro/fd2ec93d27734526da55/raw/5127b6bddcaa0df2e87bf9513...

Em acesso private, declarei a variável "string receita[9][9];".
Abri o acesso public com o construtor "Precificado(){ ...";
e me pus a encapsular minha variável private: com entrada de valor
 void def_receita( int x, int y, string valor ) { receita[x][y] = valor; }; 
e saída de valor
 string obt_receita( int x, int y, string valor ) { return( receita[x][y] ); }; 
A função obt_receita() desce macio e reanima...

Agora, def_refeita(), olha o tamanho do esculacho que o g++ me deu!!!
https://gist.githubusercontent.com/lucasseribeiro/d1f59784ace879184f54/raw/448bf3b0c9eb0af127f71dc39...

Eu fiz umas modificações nos códigos pra enfatizar apenas o problema. Algum erro também pode ser por isso, mas me avisem.

Grato
Lucas Ribeiro


Que bom que seu compilador deu esse erro. Seria estranho se não desse.

O std::cout pega o "retorno" do valor/std::string/função/etc e coloca no stdout. Uma função que retona std::string tem uma mensagem para "retornar" e para o std::cout mostrar.

Já a função sendo void ela não retorna nada, e como você queria que mostrasse algo sendo que não possui nenhum retorno?

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



3. Re: Como encapsular matriz multidimensional? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/02/2016 - 15:57h

O Thiago já deu a resposta suficiente para você entender e corrigir seu erro.

Entretanto, como você falou em encapsulamento e o está testando com um dado do tipo std::string, acho interessante que você saiba que podem existir brechas no encapsulamento quando um objeto devolve ponteiros ou referências para os campos internos, mesmo que tais campos tenham sido declarados como privados. Eu falei sobre isso na resposta que dei ao seguinte tópico deste fórum: https://www.vivaolinux.com.br/topico/C-C++/Setters-e-Getters.


4. Re: Como encapsular matriz multidimensional? [RESOLVIDO]

Lucas Ribeiro
eunix

(usa Debian)

Enviado em 04/02/2016 - 22:42h

Galera, disfarça!! kkk
Num tá mais aqui quem falou...
No dia queu escrevi o código tavam tocando back street boys muito alto na vizinhança!

Grato
Lucas Ribeiro







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts