Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
1

Доступ к методу класса

18.05.2020, 10:17. Показов 199. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброе утро!

Такой вопрос: у меня есть вектор птр-ов - boost::intrusive_ptr<SomeClass>. Я с помощью find искала нужный мне объект, получила итератор на результат и теперь хочу дернуть метод моего результата. Но почему-то компилятор ругается, что нет такого метода у SomeClass, хотя он точно есть и есть он в разделе public.
C++
1
2
3
4
const auto result = std::find(v.cbegin(), v.cend(), [](SomeClass sClass) { return sClass.GetId() == "Animal"; });
if (result != v.end())
animalId = std::to_string(result->GetValue());
}
В чем может быть проблема?

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2020, 10:17
Ответы с готовыми решениями:

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp,...

Доступ к приватному методу наследника через родителя
Тут натолкнулся на интересную штуку. #include &lt;iostream&gt; using namespace std; class A {...

Как получить доступ к методу в приватном классе?
Класс #include &lt;iostream&gt; class Employee { public: int GetAge() { return itsAge; } void...

ООП как можно ограничить доступ к методу производного классу
Покажите пожалуйста небольшой пример как это можно реализовать

4
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,766
18.05.2020, 10:35 2
Цитата Сообщение от Тамика Посмотреть сообщение
В чем может быть проблема?
Если у вас вектор указателей, то не понятно почему лямбда принимает объект, да еще и его копию.
1
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
18.05.2020, 10:35  [ТС] 3
Всё, разобралась. Не проснулась ещё
0
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,766
18.05.2020, 10:37 4
Наверное так нужно:
C++
1
2
3
4
const auto result = std::find(v.cbegin(), v.cend(), [](auto&& ptr) { return ptr->GetId() == "Animal"; });
if (result != v.end())
animalId = std::to_string(result->get()->GetValue());
}
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
18.05.2020, 10:43  [ТС] 5
zayats80888, там во-первых, из-за моих экспериментов "до", я не изменила find на find_if. find не работает с функторами. А во-вторых, я сглупила и забыла, что я ж получаю итератор. Соответственно, его нужно разыменовать. После этого всё скомпилилось. Спасибо!

Добавлено через 3 минуты
По поводу ссылок да, важное замечание, тоже поправила.
0
18.05.2020, 10:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2020, 10:43
Помогаю со студенческими работами здесь

Получить доступ к методу, который при наследовании стал private
Как получить доступ к методу, который при наследование стал private ?

Не могу обратиться к методу класса в функции
Добрый день. При написании программы возникла проблема - в функции не могу обратиться к методу...

Передача указателя на строку методу класса
после того как я изменил содержание указателя name на Nika Gamkrelidze, name в объекте не...

Не выполняется условие равенства переменной методу класса
не выполняется условие (строка 136) (проблема не с WinApi) #include&lt;ctime&gt; #include&lt;Windows.h&gt;...

У дружественной функции нет доступа к закрытому методу класса
Здравствуйте, не так давно изучаю язык по книге С. Прата. И много раз попадалось такое, что у...

Можно ли из базового класса обратится к виртуальному методу производного?
Можно ли из базового класса обратится к виртуальному методу производного? И если да то как (на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru