Форум программистов, компьютерный форум CyberForum.ru

Передать поле класса в функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача нахождения кратчайшего пути http://www.cyberforum.ru/cpp-beginners/thread1506682.html
Никак не могу понять почему в таких типах задач у меня ошибка. Помогите найти ошибку, и если сможете объясните её. Условие Робот-кладоискатель перемещается по квадратному клетчатому полю, размером 6 на 6 клеток. Часть клеток поля содержит клады монет. Числа в клетках указывают, что в соответствующей клетке есть клад из этого количества монет. 0 10 0 1 0 B 3 0 4 0 1 0 7 0 0 4 0 0 0 0 3 0...
C++ Собеседования по С++ для джуна Добрый день, если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный? Для меня пока, что самый сложный вопрос (который расскрыл бы многие области знания по С++) такой: - опишите все факторы, которые влияют на размер экземпляра класса. Какой минимальный и максимальный размер пустого класса. http://www.cyberforum.ru/cpp-beginners/thread1506665.html
Необязательные временные объекты C++
Помогите с задачкой: Класс Car содержит модель автомобиля. Функция Find определяет, присутствует ли указанная модель в списке автомобилей. class Car { string model_; public: Car(string mod) :model_(mod){} bool operator==(const Car& other) {
C++ Уведомления между потоками
Здравствуйте! Набросал код для экспериментов: #include "stdafx.h" int блок_1(HWND *hWnd, MyStruct* strukt_1); int сервис_1(HWND *hWnd, MyStruct* strukt_1); void блок(HWND *hWnd, MyStruct* strukt_1)//запускаем основной поток { int q = 0;
C++ Когда в ОС используется COM ? http://www.cyberforum.ru/cpp-beginners/thread1506576.html
Для каких действий ОС использует COM технологию ? Всегда ли она используется при исполнении exe файлов?
C++ Где найти все глаголы для ShellExecute ? Здравствуйте. Где и как посмотреть список допустимых глаголов системы? Знаю о существовании страницы в msdn , но функция которую я нашел в интернете и использую использует глагол "runas", которого нет на странице. подробнее

Показать сообщение отдельно
QVO
 Аватар для QVO
636 / 447 / 32
Регистрация: 26.10.2010
Сообщений: 1,261
Записей в блоге: 4
Завершенные тесты: 2
29.07.2015, 15:43  [ТС]     Передать поле класса в функцию
Погуглил на тему Pointer-to-member shared_ptr и вопрос решился.
C++
1
2
3
4
5
6
template <typename T, typename R>
void foo(std::shared_ptr<T>* ptr, R T::* member) 
{
    std::cout << ptr->get()->*member << std::endl;
    ptr->get()->*member = "...";
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main() {
    auto genre = std::make_shared<Genre>();
    auto provider = std::make_shared<Provider>();
    
    genre->name = "123";
    provider->logo = "http://";
 
    foo<Genre, std::string>(&genre, &Genre::name);
    foo<Genre, std::string>(&genre, &Genre::name);
    
    foo<Provider, std::string>(&provider, &Provider::logo);
    foo<Provider, std::string>(&provider, &Provider::logo);
    
    
    return 0;
}
Вывод:
Код
123
...
http://
...
Ссылка на компиляцию: http://ideone.com/qlBirp
 
Текущее время: 07:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru