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

188
Как использовать перечисления в качестве флагов в C ++?

Обрабатывать enums как флаги хорошо работает в C # с помощью [Flags]атрибута, но как лучше всего это сделать в C ++? Например, я хотел бы написать: enum AnimalFlags { HasClaws = 1, CanFly =2, EatsFish = 4, Endangered = 8 }; seahawk.flags = CanFly | EatsFish | Endangered; Тем не менее, я получаю...

188
Зачем использовать вложенные классы в C ++?

Может кто-нибудь указать мне на хорошие ресурсы для понимания и использования вложенных классов? У меня есть некоторые материалы, такие как Принципы программирования и такие вещи, как этот Центр знаний IBM - Вложенные классы Но мне все еще трудно понять их цель. Может ли кто-нибудь помочь...

188
Как мне сделать вывод CMake в директорию bin?

Я в настоящее время строю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины скомпилированы в отдельных каталогах. Моя проблема в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов исходного кода. Как сделать...

187
Аргументы шаблона по умолчанию для шаблонов функций

Почему аргументы шаблона по умолчанию разрешены только в шаблонах классов? Почему мы не можем определить тип по умолчанию в шаблоне функции-члена? Например: struct mycclass { template<class T=int> void mymember(T* vec) { // ... } }; Вместо этого C ++ заставляет использовать аргументы шаблона...

187
фатальная ошибка LNK1112: тип компьютера модуля «x64» конфликтует с типом машины назначения «X86»

Я использую CUDA (VC ++, Visual studio 2008sp1) для отладки программы FEM. Программа может работать только на платформе Win32, из-за недостатка cuda. Я думаю, что все связанные библиотечные файлы скомпилированы на платформе x86, но при компиляции я получаю сообщение об ошибке «Неустранимая ошибка...

187
Как мне вызвать :: std :: make_shared в классе только с защищенными или закрытыми конструкторами?

У меня есть этот код, который не работает, но я думаю, что цель ясна: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &)...

187
Ненужные фигурные скобки в C ++?

Делая сегодня обзор кода для коллеги, я увидел странную вещь. Он окружил свой новый код такими фигурными скобками: Constructor::Constructor() { existing code { New code: do some new fancy stuff here } existing code } Каков результат, если таковые имеются, из этого? Что может быть причиной для...

187
Каков эффект упорядочения, если ... еще, если утверждения по вероятности?

В частности, если у меня есть ряд if... else ifутверждений, и я каким-то образом заранее знаю относительную вероятность, по которой будет оцениваться каждое утверждение true, насколько сильно различается время выполнения для их сортировки в порядке вероятности? Например, я должен предпочесть это:...

186
Неопределенная ссылка на статический constexpr char []

Я хочу иметь static const charмассив в моем классе. GCC пожаловался и сказал мне, что я должен использовать constexpr, хотя теперь он говорит мне, что это неопределенная ссылка. Если я сделаю массив не членом, он будет скомпилирован. Что происходит? // .hpp struct foo { void bar(); static constexpr...

186
Как GCC и G ++ загружаются?

Это беспокоило меня некоторое время. Как GCC и G ++ компилируются сами? Я предполагаю, что каждая ревизия компилируется с ранее созданной ревизией. Это правда? И если это так, значит ли это, что самые старые версии g ++ и GCC были написаны на...

186
fork () веток больше, чем ожидалось?

Рассмотрим следующий фрагмент кода: #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i = 0; i < 2; i++) { fork(); printf("."); } return 0; } Эта программа выводит 8 точек. Как это может быть возможно? Не должно ли быть 6 точек вместо...

186
Что заставило меня = i ++ + 1; законно в C ++ 17?

Прежде чем вы начнете кричать неопределенное поведение, это явно указано в N4659 (C ++ 17) i = i++ + 1; // the value of i is incremented Еще в N3337 (C ++ 11) i = i++ + 1; // the behavior is undefined Что изменилось? Из того, что я могу собрать, из [N4659 basic.exec] За исключением отмеченных...

185
mmap () против блоков чтения

Я работаю над программой, которая будет обрабатывать файлы, которые могут иметь размер 100 ГБ или более. Файлы содержат наборы записей переменной длины. Я запустил и запустил первую реализацию и теперь смотрю на повышение производительности, особенно на более эффективный ввод-вывод, поскольку...

185
В каком сценарии я использую определенный контейнер STL?

Я читал о контейнерах STL в моей книге по C ++, в частности, о STL и его контейнерах. Теперь я понимаю, что у каждого из них есть свои специфические свойства, и я близок к тому, чтобы запомнить их все ... Но я еще не понимаю, в каком сценарии используется каждый из них. Какое объяснение? Пример...

185
Какие современные библиотеки C ++ должны быть в моем наборе инструментов? [закрыто]

Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме переполнения стека. Закрыто 6 лет назад . Улучшить этот вопрос Я не играю в C ++ около 10 лет и хочу...

185
Контейнеры STL или Qt?

Каковы плюсы и минусы использования Qt контейнеров ( QMap, QVectorи т.д.) над их STL эквивалент? Я вижу одну причину, чтобы предпочесть Qt: Контейнеры Qt могут передаваться в другие части Qt. Например, они могут использоваться для заполнения a, QVariantа затем a QSettings(хотя с некоторыми...

185
Когда использовать встроенную функцию, а когда нет?

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

185
std :: auto_ptr в std :: unique_ptr

С появлением нового стандарта (и частей, уже доступных в некоторых компиляторах), новый тип std::unique_ptrдолжен заменить его std::auto_ptr. Их использование в точности совпадает (поэтому я могу выполнить глобальный поиск / замену в моем коде (не то, чтобы я это делал, но если бы я это сделал))...