내가 심볼 테이블이있는 경우 :검색 중/순회 부스트 :: 정신 :: 치 :: 문자
struct MySymbols : symbols<char, MyEnum::Fruits>
{
MySymbols()
: symbols<char, MyEnum::Fruits>(std::string("MySymbols"))
{
add("apple", MyEnum::Apple)
("orange", MyEnum::Orange);
}
};
나는 데이터 값을 기준으로 심볼을 검색하기 위해 테이블을 반복 할을. 나는 간단한 클래스 구현 그래서 나는 람다 표현식을 사용할 수 없습니다
template<typename T>
struct SymbolSearcher
{
SymbolSearcher::SymbolSearcher(T searchFor)
: _sought(searchFor)
{
// do nothing
}
void operator() (std::basic_string<char> s, T ct)
{
if (_sought == ct)
{
_found = s;
}
}
std::string found() const { return _found; }
private:
T _sought;
std::string _found;
};
을 다음과 같이 나는 그것을 사용하고 있습니다 : 나는 _found = s
에 브레이크 포인트를 설정하면
SymbolSearcher<MyEnum::Fruits> search(ct);
MySymbols symbols;
symbols.for_each(search);
std::string symbolStr = search.found();
내가 그 _found을 확인할 수 있습니다 설정지고 그러나 search.found()는 항상 빈 문자열을 반환합니다. 나는 functor가 for_each 내부에서 호출되는 방식과 관련이 있다고 추측하고 있지만 모르겠습니다.
내가 뭘 잘못하고 있니?
nitpick : 멤버 변수의 철자해야 * _sought *하지 * _saught * : – Praetorian