Resolvendo Tipos em C++

Está com problema com namespace e tipo muito grande, existem algumas alternativas para resolver esse problema, como falarei abaixo.

#DEFINE

O modo C de resolver problemas com tipo é usando a macro #define, conforme o exemplo abaixo:

struct ItsABigStructClassName{
     int x;
     int y;
};

#define ShortName ItsABigStructClassName

ShortName _name;

 

typedef

typedef funciona exatamente como o #define a diferença que o typedef somente resolve tipo, o #define pode fazer muitas coisas a mais.

Imagine este cenário:

#include <string>
#include <map>
#include <utility>

// Confuso? Sim!
std::map<std::string, std::pair<int,double>> _map;

 

Resolvendo com typedef:

#include <string>
#include <map>
#include <utility>

typedef std::pair<int,double> mypair;
typedef std::map<std::string, mypair> mymap;

// Resolvendo!
mymap _map;

 

using namespace

Algumas bibliotecas usam muitos namespaces para separar módulos ou camadas do código, exemplo de uma biblioteca que faz isso é a Boost Log.

Declarando uma variável severity_level da Boost Log.

boost::log::trivial::severity_level _level;

Simplificando com using namespace.

using namespace boost::log::trivial;

severity_level _level;

 

auto

Auto é o Suprassumo do C++ 11, simplifica o uso de todos os tipos, “até de mais”.

auto idade = 28;
auto nome = "Fernando";
auto altura = 1.73;

// recebendo um const iterator de um map
std::map<int, double> _map;
auto ci = _map.begin();

 

Está com alguma dúvida ou sugestão? Deixe nos comentários!

Deixe um comentário