Problema com retorno no C++[RESOLVIDO]  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Olá pessoal, mais uma vez estou recorrendo ao fórum para tentar resolver um problema...

Bem, estou criando uma classe para gerenciar as conexões com o banco de dados, nessa classe eu utilizo uma biblioteca chamada otl.

Em um determinado momento eu preciso retornar uma conexão, quando eu faço isso "tomo uma portada na cara", dizendo que o membro da classe otl é privado e não posso retornar o mesmo.

Trecho do meu .cpp



declaração do atributo connection no .h


descrição do erro: error C2248: 'otl_connect::otl_connect' : cannot access private member declared in class 'otl_connect'

Se alguém souber como posso resolver esse problema fico grato.

Obrigado.

Lucas





This message was edited 1 time. Last update was at 12/11/2010 10:49:11


"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Resolvido...

Alterei a biblioteca para colocar os membros dela público.

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Isso aqui é um problema:



Pois você está retornando a conexão por valor. E isso irá disparar o construtor de cópia. Muitas vezes, esse construtor é deixado privado, justamente para evitar cópias acidentais.

O ideal seria você retornar apenas uma referência para sua conexão:


Outra coisa. Como esse método não altera a classe que o chama, é uma boa declara-lo como const.

Se a conexão não puder ser alterada no método que chamar getConnection(), declare o retorno também como const:



This message was edited 2 times. Last update was at 12/11/2010 10:53:01


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Obrigado Viny, realmente voltei a classe para privado e fiz da forma como você escreveu e funcionou.

Obrigado pela ajuda, ainda estou muito ruim no c++... mas vou melhorar...

Obrigado mais uma vez...

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Dica: Não tente programar C++ como se fosse Java, nem como se fosse C.
Estude um pouco a linguagem, ou você terá problemas realmente catastróficos.

Boas referências são o livro do Deitel e o Effective C++. Há mais dicas de livros no roadmap c++ do Ponto V:

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team