Cita:
Iniciado por eferion Pon un ejemplo del código que reproduzca el problema :)
Perdón, no lo había puesto porque prácticamente es una copia de lo que mas puesto:
Esto me funciona:
Código C++:
Ver original#include <iostream>
#include <map>
enum class Sexo
{
undefined, male, female
};
using IconsMap = std::map<Sexo,std::string>;
IconsMap initMap()
{
return
{
std::make_pair(Sexo::undefined,"No definido"),
std::make_pair(Sexo::male,"Niño"),
std::make_pair(Sexo::female,"Niña")
};
}
class IconoWareHouse
{
private:
static IconsMap _icons;
public:
IconoWareHouse()=delete;//no debe haber constructor disponible al ser clase estática
static std::string GetIcon(Sexo type)
{
auto it = _icons.find(type);
if(it == _icons.end())
{
it = _icons.find(Sexo::undefined);
}
return it->second;
}
};
IconsMap IconoWareHouse::_icons(initMap());
int main()
{
std::cout<<IconoWareHouse::GetIcon(Sexo::female)<<std::endl;
return 0;
}
Pero esto no:
Código C++:
Ver original#include <iostream>
#include <map>
enum class Sexo
{
undefined, male, female
};
using IconsMap = std::map<Sexo,std::string>;
class IconoWareHouse
{
private:
static IconsMap _icons;
public:
IconoWareHouse()=delete;//no debe haber constructor disponible al ser clase estática
static std::string GetIcon(Sexo type)
{
auto it = _icons.find(type);
if(it == _icons.end())
{
it = _icons.find(Sexo::undefined);
}
return it->second;
}
IconsMap initMap()
{
return
{
std::make_pair(Sexo::undefined,"No definido"),
std::make_pair(Sexo::male,"Niño"),
std::make_pair(Sexo::female,"Niña")
};
}
};
IconsMap IconoWareHouse::_icons(initMap());
int main()
{
std::cout<<IconoWareHouse::GetIcon(Sexo::female)<<std::endl;
return 0;
}
En este segundo caso me da este error:
error: cannot call member function ‘IconsMap IconoWareHouse::initMap()’ without object