맞춤 클래스를 사용하여 boost-variant
을 시도했습니다. 클래스 내용에 안전하게 액세스하려면 boost::static_visitor
을 사용하는 것으로 알고 있습니다. 왜 아래 코드가 컴파일되지 않는지 아십니까? 사용하기 위해 서명/선언에 대한 요구 사항은 boost::static_visitor
입니까?맞춤 클래스를 사용하는 부스트 변형
나는이 질문을 발견했다. Why can't I visit this custom type with boost::variant? 그러나 나는 그것을 얻지 못했다. 모든
감사
AFG
#include <iostream>
#include <algorithm>
#include <boost/variant.hpp>
struct CA{};
struct ca_visitor : public boost::static_visitor<CA>
{
const CA& operator()(const CA& obj) const { return obj;}
};
struct CB{};
struct cb_visitor : public boost::static_visitor<CB>
{
const CB& operator()(const CB& obj) const { return obj;}
};
int main(){
typedef boost::variant<
CA
,CB > v_type;
v_type v;
const CA& a = boost::apply_visitor(ca_visitor(), v);
}
= (VAR)를 얻을 :
이
는boost::variant<>
및static_visitor<>
의 올바른 사용의 예 'var'가'T' 타입이 아닌 경우'nullptr'입니다. 이것은 취성이 있습니다. – Yakk@Yakk : 사실, OP가 방문객의 올바른 사용법을 묻고있는 것처럼 보입니다. –
물론 : 방문을 기대하는 방식을 "방문하는"방법을 보여줌으로써 유용 할 수 있습니다. 대답을 모르는 사람은 거의 없습니다. – Yakk