Вопросы по теме 'pointer-to-member'
Почему я не могу понизить указатель на элементы в аргументах шаблона?
Если я создаю указатель на базовый член, я обычно могу преобразовать его в указатель на производный член, но не при использовании в шаблоне, таком как Buzz ниже, где первый аргумент шаблона влияет на второй. Я борюсь с ошибками компилятора или...
1133 просмотров
schedule
24.05.2023
Шаблон 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 просмотров
schedule
29.10.2023
Проверка наличия у класса конструктора копирования с TMP
Я пытался немного SFINAE, чтобы определить, есть ли у универсального типа T конструктор копирования, который я могу использовать. Вот где я сейчас нахожусь.
template <bool statement, typename out>
struct Failable
{
typedef out Type;
};...
1945 просмотров
schedule
01.05.2023
Разрешение функции указателя на член
Вот функтор, используемый для фильтрации списка объектов. Он должен быть создан с помощью указателя на функцию-член класса объектов как способ доступа к различным элементам.
class Filter_Compare : public Filter {
std::string (File::*fun)();...
313 просмотров
schedule
08.05.2023
Как работает получение адреса члена класса с помощью оператора разрешения области при использовании указателя на член?
При использовании указателя на член (точка-звезда или звезда-стрелка) для доступа к члену класса мы можем использовать следующий синтаксис:
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 просмотров
schedule
14.12.2023
хелпер приведения для перегруженного указателя на функцию-член
Я хочу иметь "более приятную" операцию приведения для указателя на метод.
Дан класс с перегруженными функциями-членами и шаблоном, который поглощает все виды указателей-членов и объектов и просто вызывает их.
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 просмотров
schedule
30.05.2023
Как заставить класс шаблона С++ вызывать методы другого класса?
У меня есть класс 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 просмотров
schedule
11.05.2023