Результаты поиска по запросу "templates"

2 ответа

Хороший улов! Я изменил заголовок в ответе. Спасибо!

я есть несколько классов, которые я не могу изменить. У каждого есть конструктор копирования, по крайней мере, один другой конструктор и функцияfoo() это возвращает некоторое значение. Я хочу создать шаблон класса, который может быть производным ...

1 ответ

Если ваша функция шаблона создается только в одном файле .cpp, вы можете определить ее там. Иногда это происходит, когда у класса есть закрытая функция-член, которая является шаблоном (и она вызывается только из файла реализации, а не из файла заголовка класса).

от вопрос уже есть ответ здесь: Почему шаблоны могут быть реализованы только в заголовочном файле? [/questions/495021/why-can-templates-only-be-implemented-in-the-header-file] 15 ответовИтак, я слышал, что шаблоны C ++ не следует разделять на ...

3 ответа

шаблон django для заполнения строк и столбцов начальной загрузки

Итак, вот моя проблема: у меня есть куча экземпляров класса. Я хотел бы иметь своего рода таблицу этих объектов экземпляра, чтобы в каждой строке было максимум шесть. В терминах начальной загрузки я хотел бы, чтобы каждый объект был представлен ...

ТОП публикаций

0 ответов

, но формально, это неопределенное поведение, если тип не POD: в зависимости от компилятора, вы получите ошибку во время компиляции или просто неверные результаты иногда. И вы не можете использовать его на указатель на член. Вы должны вызвать его с именем класса и именем члена.

template<class T, typename U> ptrdiff_t foo(T U::* m) { // return offset } могу получить смещение поля «м» в этом контексте? Я бы предпочел использовать выражение времени компиляции. Заранее благодарю за любую помощь. С уважением

2 ответа

@Ben: Вы правы: это может потребовать двух этапов создания шаблона. Но разве не страшно, что с помощью решения во время выполнения компилятор генерирует раздутый код для динамической вставки сотен указателей в вектор и, возможно, изменения его размера (malloc действительно плохо, когда у вас есть только несколько килобайт) во время процесса, хотя в идеале Достаточно ли простой таблицы поиска? А ручная пред- или постобработка еще страшнее ...

тавьте, что у вас много классов с большим количеством различных параметров шаблона. У каждого класса есть методstatic void f(), Вы хотите собрать все эти указатели на функции в списке L. Решение во время выполнения будет простым: typedef void ...

2 ответа

 оператор присваивания.

я есть простая структураWrapperОтличается двумя шаблонными перегрузками операторов присваивания: template<typename T> struct Wrapper { Wrapper() {} template <typename U> Wrapper &operator=(const Wrapper<U> &rhs) { cout << "1" << endl; return ...

3 ответа

А затем вызвать функцию как,

ак-то возможно? Я хочу, чтобы включить передачу аргументов во время компиляции. Предположим, это только для удобства пользователя, так как всегда можно набрать реальный тип с помощьюtemplate<class T, T X>, но для некоторых типов, то ...

9 ответов

это также хорошо как упражнение

аюсь построить шаблонный класс Matrix в C ++. Ниже приведена его реализация. Я реализовал два оператора +, + = на данный момент, чтобы дать представление о том, как это будет выглядеть, и я подумал, что было бы лучше попросить обратную связь, ...

1 ответ

 отличный инструмент для отладки шаблонов. С онлайн-режимом!

чень трудно понять, что не так с моим кодом при использовании метапрограммирования на С ++. Возможно, я просто не очень хорошо разбираюсь в сообщениях об ошибках, но, насколько мне известно, я не могу прибегнуть к использованию операторов печати ...

3 ответа

). В качестве альтернативы, вы можете использовать «статический оператор if», который выясняет, действительно ли T1 является целочисленным типом, и, если это так, введите typedef T1 в IntType, если нет, введите typedef T2 в IntType.

аюсь использовать шаблон Curily Recurring Template Pattern (CRTP) и предоставляю дополнительные параметры типа: template <typename Subclass, typename Int, typename Float> class Base { Int *i; Float *f; }; ... class A : public Base<A, double, ...