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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

9
«Using namespace» в заголовках C ++
На всех наших курсах по C ++ все учителя всегда ставят using namespace std;сразу после #includes в своих .hфайлах. Мне это кажется опасным, поскольку с тех пор, включив этот заголовок в другую программу, я получу пространство имен, импортированное в мою программу, возможно, не осознавая, не намереваясь или не желая этого …


20
Как легко сопоставить перечисления c ++ со строками
У меня есть несколько типов перечислений в некоторых файлах заголовков библиотек, которые я использую, и я хочу иметь способ преобразования значений перечисления в пользовательские строки - и наоборот. RTTI не сделает этого за меня, потому что «пользовательские строки» должны быть немного более читаемыми, чем перечисления. Решением грубой силы было бы …
119 c++  templates  enums 

1
Функция шаблона внутри класса шаблона
У меня есть такой код: template <class T> class MyClass { public: template <class U> void foo() { U a; a.invoke(); } }; Я хочу это в такой форме: template <class T> class MyClass { public: template <class U> void foo(); }; template <class T> /* ????? */ void MyClass<T>::foo() …
119 c++  templates 

7
Как скомпилировать для Windows в Linux с помощью gcc / g ++?
Я написал некоторые эффекты на C ++ (g ++), используя freeglut в Linux, и компилирую их с помощью g++ -Wall -lglut part8.cpp -o part8 Поэтому мне было интересно, можно ли сделать так, чтобы g ++ создавал статические скомпилированные исполняемые файлы Windows, содержащие все необходимое? У меня нет Windows, так что …
119 c++  opengl  gcc  glut  freeglut 

30
Как улучшить логику для проверки соответствия 4 логических значений некоторым случаям
У меня четыре boolзначения: bool bValue1; bool bValue2; bool bValue3; bool bValue4; Допустимые значения: Scenario 1 | Scenario 2 | Scenario 3 bValue1: true | true | true bValue2: true | true | false bValue3: true | true | false bValue4: true | false | false Так, например, такой сценарий …
118 c++  if-statement 

15
Почему по умолчанию указатели не инициализируются значением NULL?
Может кто-нибудь объяснить, почему указатели не инициализируются NULL? Пример: void test(){ char *buf; if (!buf) // whatever } Программа не будет входить в if, потому что bufне является нулем. Я хотел бы знать, зачем и в каком случае нам нужна переменная с мусором, особенно указатели, обращающиеся к мусору в памяти?

6
Определить, является ли стандартный ввод терминалом или каналом?
Когда я выполняю " python" из терминала без аргументов, появляется интерактивная оболочка Python. Когда я cat | pythonзапускаю " " с терминала, он не запускает интерактивный режим. Каким-то образом, не получая никаких данных, он обнаружил, что подключен к трубе. Как мне сделать подобное обнаружение в C, C ++ или Qt?
118 c++  c  qt  pipe  stdin 

9
Как далеко могут зайти утечки памяти?
Я много раз сталкивался с утечками памяти. Обычно, когда я ухожу, mallocкак будто завтра не наступит, или болтаюсь, FILE *как грязное белье. Обычно я предполагаю (читай: отчаянно надеюсь), что вся память очищается, по крайней мере, когда программа завершается. Существуют ли ситуации, когда утечка памяти не будет собрана при завершении или …
118 c++  c  memory  memory-leaks 

9
Как я получил значение размером больше 8 бит из 8-битного целого числа?
Я обнаружил чрезвычайно неприятную ошибку, скрывающуюся за этой маленькой жемчужиной. Я знаю, что согласно спецификации C ++ подписанные переполнения являются неопределенным поведением, но только когда переполнение происходит, когда значение расширяется до разрядности sizeof(int). Насколько я понимаю, увеличение a charникогда не должно быть неопределенным, пока sizeof(char) < sizeof(int). Но это не …

5
Как работает is_base_of?
Как работает следующий код? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const; operator D*(); }; template <typename B, typename D> struct is_base_of { template <typename T> static yes check(D*, T); static no check(B*, int); static const bool value = sizeof(check(Host<B,D>(), int())) …

8
Есть ли подсказка компилятора для GCC, чтобы заставить предсказание ветвления всегда идти определенным путем?
Для архитектур Intel есть ли способ инструктировать компилятор GCC генерировать код, который всегда вызывает предсказание ветвления определенным образом в моем коде? Поддерживает ли это оборудование Intel? А как насчет других компиляторов или оборудования? Я бы использовал это в коде C ++, где я знаю случай, когда я хочу работать быстро, …

13
remove_if эквивалент для std :: map
Я пытался стереть ряд элементов с карты в зависимости от определенных условий. Как это сделать с помощью алгоритмов STL? Сначала я думал об использовании, remove_ifно это невозможно, поскольку remove_if не работает для ассоциативного контейнера. Есть ли какой-либо эквивалентный алгоритм remove_if, который работает для карты? В качестве простого варианта я подумал …
118 c++  stl  map 

10
Идиома Pimpl против интерфейса виртуального класса Pure
Мне было интересно, что заставит программиста выбрать либо идиому Pimpl, либо чистый виртуальный класс и наследование. Я понимаю, что идиома pimpl включает одну явную дополнительную косвенность для каждого общедоступного метода и накладные расходы на создание объекта. С другой стороны, виртуальный класс Pure имеет неявную косвенную адресацию (vtable) для наследующей реализации, …

27
CMake не находит компилятор Visual C ++
После установки Visual Studio 2015 и запуска CMake в предыдущем проекте CMake выдает ошибку о том, что не может найти компилятор C. The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:4 (PROJECT): No …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.