Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
Quando se cria uma classe, no raro pretender que ela seja utilizada
por outras pessoas posteriormente.
Para esconder o cdigo, separamos a definio e a implementao,
utilizando, respectivamente, arquivos header (.h) e source (.cpp).
Boa prtica
Header
Nos arquivos header, coloca-se aquilo que define como uma classe
deve ser utilizada
Atributos
Cabealhos de funes
Etc
Pais2.hpp
Observe que no incio do arquivo existem um #ifndef e o nome da
classe.
Suponhamos que existam duas classes de um mesmo programa e as
duas classes possuam um objeto da classe Pais
As duas classes devem ento, incluir o arquivo hpp
O problema que uma classe no pode ser includa mais de uma vez.
Problemas
varivel redeclarada,
e o compilador acusa um erro de Nome-davarivel redefined.
Para que isso no ocorra, cria-se uma flag que testa se o arquivo j foi includo.
Pais.hpp
Utilizando o ifndef o cdigo da declarao executado apenas 1 vez.
Este um detalhe bastante importante
Praticamente impossvel levar adiante projetos grandes sem a utilizao
dessas flags.
Nos arquivos fonte (.cpp), deve ser colocado aquilo que o usurio da classe
no deve ver, ou seja, a implementao das funes membro.
No esquea de incluir o arquivo header, para que o arquivo possa enxergar
as definies.
fundamental adicionar Nome-da-classe:: antes dos nomes de funo, para
que o compilador saiba que se trata de uma funo da respectiva classe.
Pais2.hpp
#ifndef __PAIS2_HPP // se o header no est definido
Pais2();
int getCont();
#include <string>
int setCont();
string getNome();
string getNomeCapital();
class Pais2
string * getListaPais();
void verificarFronteiras();
private:
};
double dimensao;
string listaPais[5];
int Pais2::cont;
#endif
public:
Pais2.cpp
#include <iostream>
#include <string>
#include <math.h>
#include "pais2.hpp"
cont++;
}
Pais2.cpp
Pais2::Pais2()
{
nome="";
string Pais2::getNome()
nomeCapital="";
dimensao = 0;
listaPais[0]="Uruguai";
return nome;
}
cont++;
}
string Pais2::getNomeCapital()
{
int Pais2::getCont()
{
return nomeCapital;
}
return cont;
}
string * Pais2::getListaPais()
{
int Pais2::setCont()
{
return listaPais;
}
this->cont=cont;
Pais2.cpp
void Pais2::verificarSePaisEIgual(Pais2 x)
string *y = x.getListaPais();
int cont = 1;
cout << "\n\nVizinhos comuns: ";
if (listaPais[i]==y[j])
{
void Pais2::verificarFronteiras()
cout<<"\n("<<cont<<")"<<listaPais[i];
for (int i=0;i<5;i++)
cont++;
}
cout << "\n ["<<i<<"] = " +
listaPais[i];
}
}
void Pais2::verificaVizinhosComuns(Pais2 x)
}
}