View Full Version : Ponteiros


Jose - Rio Claro
10-03-2006, 11:40 AM
Pessoal tenho as duas classes abaixo, desejo saber qual o valor
armazena em qualCliente, em cada um dos membros nomeCliente,
enderecoCliente...será que alguém pode me ajudar?

class NotaCabecalho
{
protected:
Cliente *qualCliente;

public:

NotaCabecalho()
{
printf("Criei a nota!");
}
~NotaCabecalho()
{
printf("Fechando a nota");
}
void setQualCliente(Cliente *pQualCliente)
{
this->qualCliente = pQualCliente;
}
Cliente *getQualCliente()
{
return(qualCliente);
}

void PesquisarCliente(Cliente *pClientes)
{
int i, achou = 0;
char cliente[30];
char mensagem[30];
strcpy(mensagem, "\nDigite o nome do Cliente Desejado: ");
do
{
printf("%s", mensagem);
gets(cliente);
flushall();
for(i = 0; ((i < maxCliente) && !(achou)); i++)
{
if (strcmp(cliente, pClientes[i].getNomeCliente())==0)
{
achou = 1;
printf ("\n ******************** aki
******************");
printf ("%s", pClientes[i].getNomeCliente(),
"*********");
system("PAUSE");
*qualCliente = pClientes[i];
}
}
strcpy(mensagem, "Cliente nao encontrado, digite novamente
\n");
}
while(!achou);
printf("Jose Antonio");

}

class Cliente
{
protected:
char codigoCliente[3], nomeCliente[30], enderecoCliente[30];
public:

// Construtores

Cliente()
{
printf("\n O objeto Cliente (%p) foi alocado, this");
strcpy(this->codigoCliente, "");
strcpy(this->nomeCliente, "");
}
Cliente(char pCodigoCliente[], char pNomeCliente[])
{
strcpy(this->codigoCliente, pCodigoCliente);
strcpy(this->nomeCliente, pNomeCliente);
printf("\n O objeto Cliente (%p), de codigo %s e nome %s foi
alocado", this, codigoCliente, nomeCliente);
}

// Destrutor

~Cliente()
{
printf ("\n O objeto Cliente (%p), de codigo %s e o nome %s foi
desalocado", this, codigoCliente, nomeCliente);
}

// Area Setar
void setNomeCliente(char pNomeCliente[])
{
strcpy(this->nomeCliente, pNomeCliente);
}
void setCodigoCliente(char pCodigoCliente[])
{
strcpy(this->codigoCliente, pCodigoCliente);
}
void setEnderecoCliente(char pEnderecoCliente[])
{
strcpy(this->enderecoCliente, pEnderecoCliente);
}


// Area Obter
char *getCodigoCliente()
{
return(codigoCliente);
};
char *getNomeCliente()
{
return(nomeCliente);
};
};

Frederico Pissarra
10-06-2006, 01:41 PM
"Jose - Rio Claro" <z_elemento@yahoo.com.br> escreveu na mensagem
news:1159872005.809083.48690@i3g2000cwc.googlegroups.com...
Pessoal tenho as duas classes abaixo, desejo saber qual o valor
armazena em qualCliente, em cada um dos membros nomeCliente,
enderecoCliente...será que alguém pode me ajudar?

--------------%<----file.h------------%<-------------------------------
/* A sintaxe abaixo é usada com o Visual Studio 2005...
Já que estamos falando de .NET aqui, não seria melhor declarar as
classes como: */
#uses <System.dll>

using namespace System;

public ref class Cliente
{
protected:
String^ m_strCodigo;
String^ m_strNome;
String^ m_strEndereco;

public:
// Defina o construtor e destrutor em file.cpp
Cliente();
virtual ~Cliente();

// Veja observações abaixo...
void setCodigo(String^ str)
{ m_strCodigo = str; }
void setNome(String^ str)
{ m_strNome = str; }
void setEndereco(String^ str)
{ m_strEndereco = str; }

String^ getCodigo() { return m_strCodigo; }
String^ getNome() { return m_strNome; }
String^ getEndereco() { return m_strEndereco; }
};

public ref class NotaCabecalho
{
protected:
Cliente^ m_pQualCliente;

public:
NotaCabecalho() : m_pQualCliente(nullptr)
{ Console::WriteLine("Criei a nota"); }
virtual ~NotaCabecalho()
{ Console::WriteLine("Fechando a nota"); }

void setQualCliente(Cliente^ pQualCliente)
{ m_pQualCliente = pQualCliente; }
Cliente^ getQualCliente()
{ reutrn m_pQualCliente; }

// Defina essa função em file.cpp
void PesquisarCliente(Cliente^ pCliente);
};
--------------%<----fim de file.h----%<-------------------------------

Obs:
Você pode substituir as atribuições de forma a garantir o tamanho de
cada string. Por exemplo:

void setCodigo(String^ str) { m_strCodigo = str->Substring(1, 3); }

Dessa forma apenas os 3 primeiros caracteres serão considerados para o
código.

Outra coisa: Ao definir a função no corpo da classe vc está dizendo ao
compilador para
criar funções inline. Assim, a função definida dessa forma não é "chamada",
mas "copiada" a cada chamada feita. Portanto é prudente definir funções
inline apenas para aquelas funções pequenas e bem rápidas... Por isso
coloquei "// Defina essa função em file.cpp" no código acima...

Os puristas podem sentir falta do finalizador nas classes.... Se o
desenvolvedor preocupar-se em "deletar" o objeto um finalizador não será
necessário!

[]s
Fred