Ok, так что я подталкивание :: bimap объявлен так:Поиск подталкивание :: bimap для текущего экземпляра класса
boost::bimap<object*, position> object_list;
Где объект и позиции представляют собой класс и структура, соответственно.
Внутри текущего объекта, сохраненного в бимаме, я хочу найти его собственную запись.
В настоящее время я пытаюсь сделать так, как это:
void order::do_thing() {
...
position pos = object_list.left.at(this);
...
}
У меня есть ошибки при разборе вывода сообщения об ошибке, но кажется, что в зависимости от bimap не нравится константная-ность и/или эталонность этого (и да, я знаю, что это rvalue).
Что было бы правильным/предлагаемым способом для этого поиска?
Вот фрагмент ошибки:
order.cpp:117:56: required from here
/usr/include/boost/bimap/container_adaptor/associative_container_adaptor.hpp:207:56: error: no match for call to ‘(const boost::bimaps::container_adaptor::detail::key_to_base_identity<object*, object* const>) (order* const&)’
this->template functor<key_to_base>()(k)
(Edit для решения вопроса комментариев sehe и указать на проблему)
Извинения, если мой пост был в плохом этикету, я я новичок в публикации на SO, и я был в предположении, что просто сброс всего моего кода (просто для включения пользовательских объектов и шаблонов для этого раздела кода сотни строк) будет считаться плохой формой, поэтому я обрезал его к (как я думал, был) минимум, чтобы все еще решить проблему.
И только для того, чтобы обратиться к тестовой ссылке, я пишу тестовые примеры. В этом случае я заменял вектор для бимака, который нужно добавить в код позиции, и это фактически не скомпилируется (хотя я скажу, что я не очень четко указывал на то, что это ошибка компиляции, а не трассировка стека). Я предполагаю, что вы (sehe), подумали, что я говорю о ошибке во время выполнения, потому что в противном случае я не вижу, насколько релевантна ссылка.
В любом случае, я обрезал код до фактического минимума, чтобы воспроизвести ошибку, чтобы я мог опубликовать ее здесь, а затем понял реальную проблему. Как было показано выше, bimap имеет значения <
объект *, position>
Но класс пытается внедриться в bimap является заказ класс: void
заказ::do_thing() {
Так оказалось, что простая ошибка типа , Извините, все, для того, чтобы задать действительно тупой вопрос. Наверное, это то, что я получаю от работы над проектами в 3 часа ночи.
Вы должны показать свой фактический код. Проведя время, я смог/угадал/вашу вероятную проблему, но если бы вы включили SSCCE и фактические сообщения компилятора, вы бы спасли себя (и других) много времени. – sehe
См. Также ** [Никто больше не пишет тестовые ящики] (http://kera.name/articles/2013/10/nobody-writes-testcases-any-more/) ** и ** [Решите свою проблему, попросив вопрос о Stackoverflow] (http://blog.jerryorr.com/2014/04/solve-your-problem-by-almost-asking.html) **. – sehe