Вопросы по теме 'pointer-to-member'

Почему я не могу понизить указатель на элементы в аргументах шаблона?
Если я создаю указатель на базовый член, я обычно могу преобразовать его в указатель на производный член, но не при использовании в шаблоне, таком как Buzz ниже, где первый аргумент шаблона влияет на второй. Я борюсь с ошибками компилятора или...
1133 просмотров

Шаблон Crazy C++ — шаблон для доступа к отдельным атрибутам класса.
Я начинающий программист на C++, но я думал, что знаю о C++ достаточно, пока сегодня не наткнулся на подобный код на работе и не понял, как он на самом деле работает. class Object { }; template < class PropObject, class...
3399 просмотров
schedule 04.09.2022

Дружественный синтаксис для параметра шаблона Ptr-to-member
Итак, я считаю, что это чисто синтаксический вопрос С++. У меня есть класс, определенный с помощью ptr-to-member в качестве одного из параметров шаблона: template <class T, T *T::*hook> class My_list { У меня есть еще один простой...
302 просмотров
schedule 08.10.2022

Указатель функции — ошибка времени компиляции
Я новичок в указателях функций, и мне нужна ваша помощь. У меня есть метод: int test3(int i) { return i; } Затем другим методом (не основным) я делаю: int (*pTest3)(int) = test3; Из примеров, которые я прочитал, это кажется...
506 просмотров

Проверка наличия у класса конструктора копирования с TMP
Я пытался немного SFINAE, чтобы определить, есть ли у универсального типа T конструктор копирования, который я могу использовать. Вот где я сейчас нахожусь. template <bool statement, typename out> struct Failable { typedef out Type; };...
1945 просмотров

Разрешение функции указателя на член
Вот функтор, используемый для фильтрации списка объектов. Он должен быть создан с помощью указателя на функцию-член класса объектов как способ доступа к различным элементам. class Filter_Compare : public Filter { std::string (File::*fun)();...
313 просмотров

Как работает получение адреса члена класса с помощью оператора разрешения области при использовании указателя на член?
При использовании указателя на член (точка-звезда или звезда-стрелка) для доступа к члену класса мы можем использовать следующий синтаксис: A * pa; int A::*ptm2 = &A::n; std::cout << "pa->*ptm: " << pa->*ptm << '\n';...
6323 просмотров
schedule 11.12.2023

Вызов квалифицированного идентификатора базовой функции через указатель
Если у меня есть виртуальная функция foo() , сначала определенная в базовом классе B , а затем переопределенная в производном классе D , как я могу сохранить адрес B::foo в функции-указателе таким образом, чтобы при ее вызове вызов будет вести...
248 просмотров
schedule 20.02.2024

Вызовите указатель на функцию-член, переданную в функцию
Я передаю указатель на функцию-член в функцию шаблона. Что-то вроде этого, Foo bar; /* bar.baz(...) is a function */ auto pnt = bar.baz; passMmbFunc<...,decltype(pnt)>(...,pnt); Соответствующие части passMmbFunc выглядят...
611 просмотров
schedule 09.11.2022

Приведение производного виртуального переопределения к базовому чисто виртуальному члену
Я понимаю, почему вы не можете просто привести указатель функции-члена производного класса к указателю функции-члена базового класса, как объяснено здесь . Но, учитывая этот фрагмент: struct base { virtual void foo() = 0; }; struct...
861 просмотров

хелпер приведения для перегруженного указателя на функцию-член
Я хочу иметь "более приятную" операцию приведения для указателя на метод. Дан класс с перегруженными функциями-членами и шаблоном, который поглощает все виды указателей-членов и объектов и просто вызывает их. class A { public: void...
293 просмотров
schedule 20.07.2022

тип указателя на элемент данных базы из-за стандарта
тип выражения &Derived::member из следующего фрагмента не int Derived:: * , а int Base:: * (с g++5): #include <iostream> #include <typeinfo> struct Base { int member ; } ; struct Derived : Base {} ; int main ( ) {...
44 просмотров
schedule 01.02.2024

Зачем мне оператор .* в С++?
Недавно я узнал, что оператор .* (и тесно связанный с ним оператор ->* ) существует в C++. (См. этот вопрос.) На первый взгляд кажется аккуратным, но зачем мне это вообще нужно? Два ответа на связанный вопрос предоставили надуманные...
580 просмотров
schedule 01.02.2023

c++ указатель на член (указатель на базовый класс члена)
class Base { int type; }; class Derived1 : public Base { ... }; class Derived2 : public Base { ... }; class Container { public: Derived1 f1; Derived2 f2; }; Container c; size_t offset = (size_t) static_cast<Base*>(...
164 просмотров
schedule 06.07.2023

Почему указатели на нестатические функции-члены нельзя использовать в качестве унарного предиката для алгоритмов стандартной библиотеки?
Многие алгоритмы из стандартной библиотеки принимают унарный предикат с сигнатурой bool (Type & item) , поэтому прямое предоставление указателя на нестатическую функцию-член не работает. Это кажется довольно ограничительным, учитывая, что такое...
535 просмотров

Как заставить класс шаблона С++ вызывать методы другого класса?
У меня есть класс A, который должен вызывать функции-члены класса шаблона B. Поискав вокруг, я нашел этот пример кода на этом сайте: #include <iostream> template<typename T, typename FType> void bar(T& d, FType f) { (d.*f)(); //...
1394 просмотров
schedule 06.04.2022

Указатель на базовую виртуальную функцию-член
Есть ли способ сделать указатель на функцию-член в базовом классе, если это виртуальная функция, и она переопределена в производном классе? Рассмотрим код следующим образом #include <iostream> #include <functional> struct Base {...
73 просмотров