Problema com retorno no C++[RESOLVIDO]

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

otl_connect ConnectionFactory::getConnection()
{	
	return this->connection;
}

declaração do atributo connection no .h

 private://já mudei para public e tb não funcionou
		otl_connect connection;

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

Resolvido…

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

Isso aqui é um problema:

otl_connect ConnectionFactory::getConnection() { return this->connection; }

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:

otl_connect& ConnectionFactory::getConnection() const { return this->connection; }
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:

const otl_connect& ConnectionFactory::getConnection() const { return this->connection; }

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…

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: