C++: доступ к элементу данных подструктуры с помощью указателя на член

Мне нужно использовать функцию указателя на член C++, чтобы сделать функцию доступа к члену подструктуры. Обратите внимание, что объект, с которым должна работать функция, невидим для вызывающей стороны.

Я сократил это до следующей проблемы с игрушкой (C++14 или более поздняя версия):

#include <iostream>

struct SubStruct {
   int c;
};
struct MyStruct {
   int a;
   int b;
   float f;
   SubStruct ss;
};

template <typename Tmember>
auto addTogether(Tmember member) {
    MyStruct s1 = {.a = 1, .b =2, .f =3.3, .ss = {.c = 4}};
    MyStruct s2 = {.a = 10, .b =20, .f =30.0, .ss = {.c = 40}};;

    return s1.*(member) + s2.*(member);
}

int main() {
    std::cout << "sum a = " << addTogether(&MyStruct::a) << std::endl;
    std::cout << "sum b = " << addTogether(&MyStruct::b) << std::endl;
    std::cout << "sum f = " << addTogether(&MyStruct::f) << std::endl;
    //std::cout << "sum c = " << addTogether(&MyStruct::ss::c) << std::endl; //DOES NOT WORK
    //std::cout << "sum c = " << addTogether(&MyStruct::ss.c) << std::endl; //DOES NOT WORK
    return 0;
}

Результат, как и ожидалось:

sum a = 11
sum b = 22
sum f = 33.3

Но как мне передать указатель на член данных ss.c? Смотрите две закомментированные строки в main().

Благодарю.

0 ответов

Другие вопросы по тегам