I defined two enum classes with same name, and they are in different namespaces. I also binded operators to each classes, but it occurs link error LNK2005.
My Code
namespace A
{
enum class TmpClass : __int64
{
tmpEnum1 = 1
}
tmpClass operator +(tmpClass lhs, tmpClass rhs)
{
return static_cast<tmpClass> (
static_cast<std::underlying_type<tmpClass>::type>(lhs) +
static_cast<std::underlying_type<tmpClass>::type>(rhs)
);
}
}
namespace B
{
enum class TmpClass : __int64
{
tmpEnum2 = 1
}
tmpClass operator +(tmpClass lhs, tmpClass rhs)
{
return static_cast<tmpClass> (
static_cast<std::underlying_type<tmpClass>::type>(lhs) +
static_cast<std::underlying_type<tmpClass>::type>(rhs)
);
}
}
Error
LNK2005 "enum A::tmpClass __cdecl A::operator&(enum A::tmpClass,enum A::tmpClass)" already defined in stdafx.obj.
How can I bind same operator to class with same name from different namespaces?
Aucun commentaire:
Enregistrer un commentaire