Вопросы с тегом «c++»

123
Как передать функцию-член, если ожидается бесплатная функция?

Вопрос в следующем: рассмотрите этот фрагмент кода: #include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d + %d = %d", a, b, a + b); } }; void function1(void (*function)(int, int)) { function(1, 1); } void test(int a,int b) { printf("%d - %d = %d", a , b , a - b); }...

123
Организация проекта C ++ (с gtest, cmake и doxygen)

Я новичок в программировании в целом, поэтому решил, что начну с создания простого векторного класса на C ++. Однако я бы хотел с самого начала выработать хорошие привычки, а не пытаться изменить свой рабочий процесс позже. У меня сейчас только два файла vector3.hppи vector3.cpp. Этот проект будет...

123
Почему std :: queue :: pop не возвращает значение?

Я просмотрел эту страницу, но не могу понять причину того же. Там упоминается, что "для него более разумно вообще не возвращать никакого значения и требовать от клиентов использования front () для проверки значения в начале очереди" Но проверка элемента из front () также требует, чтобы этот элемент...

123
polymorphic_allocator: когда и зачем мне его использовать?

Вот документация по cppreference , вот рабочий проект. Должен признать, что я не понимал, какова настоящая цель polymorphic_allocatorи когда / почему / как я должен его использовать. Например, pmr::vectorподпись имеет следующую подпись: namespace pmr { template <class T> using vector =...

122
Использовать C ++ с какао вместо Objective-C?

Я хотел бы писать приложения, использующие C ++ и фреймворки Cocoa, потому что Apple не поддерживает 64-разрядную версию Carbon. С ++ кажется довольно ванильным в своей реализации в Linux и Windows, но в Mac OS X кажется, что требуются дополнительные части кода, специфичные для Apple (например,...

122
Правильное использование стека и кучи в C ++?

Я занимаюсь программированием некоторое время, но в основном это были Java и C #. На самом деле мне никогда не приходилось управлять памятью самостоятельно. Я недавно начал программировать на C ++, и я немного не понимаю, когда мне следует хранить вещи в стеке, а когда - в куче. Я понимаю, что...

122
Флаги для включения подробных и подробных предупреждений g ++

Часто, работая с C ниже gcc, я начинаю со следующего набора предупреждающих флагов (с трудом собранных из нескольких источников): -Wall -Wextra -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast \ -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef \...

122
ошибка: использование удаленной функции

Я работал над некоторым кодом C ++, который написал мой друг, и при компиляции с gcc4.6 получаю следующую ошибку, которую никогда раньше не видел: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would...

122
Как заставить компилятор C #, C ++ или Java вычислять 1 + 2 + 3 +… + 1000 во время компиляции?

В недавнем интервью мне задали действительно странный вопрос. Интервьюер спросил меня, как я могу вычислить 1 + 2 + 3 + ... + 1000, просто используя функции компилятора. Это означает, что мне не разрешено писать программу и выполнять ее, но я должен просто написать программу, которая могла бы...

122
Использование этого указателя вызывает странную деоптимизацию в горячем цикле

Недавно я столкнулся со странной деоптимизацией (точнее, упущенной возможностью оптимизации). Рассмотрим эту функцию для эффективной распаковки массивов 3-битных целых чисел в 8-битные целые числа. На каждой итерации цикла он распаковывает 16 int: void unpack3bit(uint8_t* target, char* source, int...

121
Что означает template <unsigned int N>?

При объявлении шаблона я привык иметь такой код: template <class T> Но в этом вопросе они использовали: template <unsigned int N> Проверил, компилируется. Но что это значит? Это не типовой параметр? И если да, то как мы можем иметь шаблон без какого-либо параметра...

121
Позиция установленного младшего бита

Я ищу эффективный способ определения позиции младшего значащего бита, который установлен в целое число, например, для 0x0FF0 это будет 4. Тривиальная реализация такова: unsigned GetLowestBitPos(unsigned value) { assert(value != 0); // handled separately unsigned pos = 0; while (!(value & 1)) {...

121
Как рассчитать время выполнения фрагмента кода в C ++

Мне нужно вычислить время выполнения фрагмента кода C ++ в секундах. Он должен работать либо на машинах Windows, либо на Unix. Для этого я использую следующий код. (импорт раньше) clock_t startTime = clock(); // some code here // to compute its execution duration in runtime cout << double(...

121
Порядок вызова конструктора и деструктора члена

О гуру C ++, я ищу твоей мудрости. Говорите со мной на стандартном языке и скажите, гарантирует ли C ++, что следующая программа: #include <iostream> using namespace std; struct A { A() { cout << "A::A" << endl; } ~A() { cout << "A::~" << endl; } }; struct B { B() {...

121
Почему нулевой адрес используется для нулевого указателя?

В C (или C ++, если на то пошло) указатели являются особенными, если они имеют нулевое значение: я советую устанавливать указатели на ноль после освобождения их памяти, потому что это означает, что освобождение указателя снова не опасно; когда я вызываю malloc, он возвращает указатель с нулевым...

121
Что входит в образовательный инструмент, чтобы продемонстрировать необоснованные предположения, которые люди делают в C / C ++?

Я хотел бы подготовить небольшой обучающий инструмент для SO, который должен помочь начинающим (и промежуточным) программистам распознавать и оспаривать свои необоснованные предположения в C, C ++ и их платформах. Примеры: "целые числа" "у всех есть ASCII" "Я могу сохранить указатель на функцию в...

121
Перегрузка оператора: функция-член или функция-не-член?

Я читал, что перегруженный оператор, объявленный как функция-член, является асимметричным, потому что он может иметь только один параметр, а другой параметр, передаваемый автоматически, является thisуказателем. Так что не существует стандарта для их сравнения. С другой стороны, перегруженный...