나는 boost :: any의 벡터를 가지고 있으며이 벡터에서 'any'의 인덱스를 찾고 싶다. 이 같은boost :: any compare value?
뭔가 :
template <class T> bool IsValueEqualTo(any aniInVector, any value)
{
if (aniInVector.empty() && value.empty())
return true;
if (aniInVector.empty() && !value.empty())
return false;
if (!aniInVector.empty() && value.empty())
return false;
try
{
T left = boost::any_cast<T>(aniInVector);
T right = boost::any_cast<T>(value);
return left == right;
}
catch(const boost::bad_any_cast &exception)
{
}
return false;
}
문제는 내가 애니 캐스트를 수행 할 때 지금은 캐스팅이다 : 나는 다음과 같은 방법이 개 어떤 값을 비교하려고이를 위해
vector<any> values;
any valueISearch = ...;
find<A*>(valueISearch);
특정 유형 및 기본 유형에 대해 신경 쓰지 마십시오 :
class A {};
class B: public A {};
B v1;
B v2;
IsValueEqualTo<A*>(&v1, &v2);
링크 전용 대답이지만 링크가 작동하지 않습니다. –
링크가 고정되었습니다. –