Alguma forma de reutilizar/copiar enum em C++11, 14 ou 17? [RESOLVIDO]

1. Alguma forma de reutilizar/copiar enum em C++11, 14 ou 17? [RESOLVIDO]

M.
XProtoman

(usa Fedora)

Enviado em 18/11/2016 - 21:04h

Boa noite a todos,

Existem duas classes diferentes que possuem enum igual, gostaria de saber se existe alguma técnica disponível para reutilizar/copiar o enum com menor esforço possível, segue abaixo exemplo:
#include <iostream>

class Cor
{
public:
typedef enum QUALQUERCOISA: int
{
VERMELHO,
VERDE,
AZUL
} qualquercoisa_tipo;
};

class Primaria
{
public:
// Alguma forma de resolver isso?
typedef enum QUALQUERCOISA: int
{
VERMELHO = Cor::VERMELHO,
VERDE = Cor::VERDE,
AZUL = Cor::AZUL
} qualquercoisa_tipo;
};

int main()
{
return 0;
}



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/11/2016 - 12:41h

As duas classes evoluem juntas, ou pode ser que a coincidência de tipos que existe hoje venha a se desfazer no futuro?

Perguntando de outro modo, qual o tipo de interdependência entre as duas classes (ou dos objetos de cada uma)? É apenas a coincidência da enumeração, ou vai além disso?

Se você tem um tipo de dados (sua enumeração) que transcende naturalmente a fronteira da classe dentro do qual ele foi criado, você poderia reconsiderar se ele deve estar dentro da classe, pois talvez devesse estar fora dela.

Mas se a refatoração não for possível, você pode tentar algo parecido com o seguinte (que está longe de ser ideal).

class A {
public:
enum E { e0, e1, e2 };

E f(){ return e0; }
};

class B {
public:
using E=A::E;
E f(){ return E::e0; }
};


3. Re: Alguma forma de reutilizar/copiar enum em C++11, 14 ou 17? [RESOLVIDO]

M.
XProtoman

(usa Fedora)

Enviado em 19/11/2016 - 13:28h

paulo1205 muito obrigado pela resposta, a solução é perfeita e o que você falou realmente me fez repensar se não seria melhor criar uma classe separada e única em vez de reutilizar o enum, vou seguir essa recomendação e guardar essa grande dica que você passou para reutilizar em algum outro código que caia na mesma situação, muito obrigado mais uma vez.

____________________
“Mas nós sabemos que a razão de a maioria estar aqui, é a nossa afinidade com a desobediência!” (Morpheus)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts