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

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

11
Как эффективно очистить очередь std :: queue?
Я использую std :: queue для реализации класса JobQueue. (В основном этот класс обрабатывает каждую работу в порядке FIFO). В одном сценарии я хочу очистить очередь за один раз (удалить все задания из очереди). Я не вижу четкого метода, доступного в классе std :: queue. Как эффективно реализовать метод clear …
166 c++  stl  queue 

16
Программа не может запуститься, потому что отсутствует libgcc_s_dw2-1.dll
Я создал простую программу на C ++ с Code :: Blocks. Если я запускаю его из Code :: Blocks, он работает правильно; но если я запускаю его двойным щелчком по исполняемому файлу, появляется окно с таким сообщением: Программа не может запуститься, потому что libgcc_s_dw2-1.dll отсутствует на вашем компьютере. Попробуйте переустановить …
166 c++  windows  mingw 

8
Лямбда-захват как постоянная ссылка?
Можно ли захватить константной ссылкой в ​​лямбда-выражении? Я хочу, чтобы назначение, отмеченное ниже, не сработало, например: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], …
166 c++  c++11  lambda  c++14 

2
точное указание «условный переход или перемещение зависит от неинициализированных значений» сообщение valgrind
Так что я получил какое-то загадочное сообщение с неинициализированными значениями от valgrind, и было довольно загадочно, откуда взялась плохая ценность. Похоже, что valgrind показывает место, где в конечном итоге используется унифицированное значение, а не источник неинициализированного значения. ==11366== Conditional jump or move depends on uninitialised value(s) ==11366== at 0x43CAE4F: __printf_fp …
166 c++  valgrind 

11
Как автоматически конвертировать строго типизированный enum в int?
#include <iostream> struct a { enum LOCAL_A { A1, A2 }; }; enum class b { B1, B2 }; int foo(int input) { return input; } int main(void) { std::cout << foo(a::A1) << std::endl; std::cout << foo(static_cast<int>(b::B2)) << std::endl; } Это a::LOCAL_Aто, чего пытается достичь строго типизированное перечисление, но есть …

1
Ошибка статических функций-членов; Как правильно написать подпись?
Я получаю сообщение об ошибке при попытке скомпилировать мой код в g ++ с использованием текущей подписи: cannot declare member function static void Foo::Bar(std::ostream&, const Foo::Node*) to have static linkage Мой вопрос двоякий: Почему он не компилируется таким образом? Какая правильная подпись и почему? Подписи всегда были моей смертью при …

9
Почему volatile не считается полезным в многопоточном программировании на C или C ++?
Как показано в этом ответе, который я недавно опубликовал, мне кажется, что я не совсем понимаю полезность (или ее отсутствие) volatileмногопоточного программирования. Насколько я понимаю, в любой момент, когда переменная может быть изменена вне потока контроля фрагмента кода, обращающегося к ней, эта переменная должна быть объявлена volatile. Обработчики сигналов, регистры …

7
Почему я должен объявлять виртуальный деструктор для абстрактного класса в C ++?
Я знаю, что это хорошая практика - объявлять виртуальные деструкторы для базовых классов в C ++, но всегда ли важно объявлять virtualдеструкторы даже для абстрактных классов, которые функционируют как интерфейсы? Пожалуйста, предоставьте некоторые причины и примеры, почему.

11
Вызывает ли удаление указатель на подкласс деструктор базового класса?
У меня есть, class Aкоторый использует выделение кучи памяти для одного из своих полей. Класс A создается и сохраняется как поле указателя в другом классе ( class B. Когда я закончу с объектом класса B, я вызываю delete, который, я полагаю, вызывает деструктор ... Но вызывает ли это и деструктор …

11
Действительно ли идиома pImpl используется на практике?
Я читаю книгу «Исключительный C ++» Херба Саттера, и в этой книге я узнал об идиоме pImpl. По сути, идея состоит в том, чтобы создать структуру для privateобъектов classи динамически распределить их, чтобы уменьшить время компиляции (а также лучше скрыть частные реализации). Например: class X { private: C c; D …
165 c++  oop  pimpl-idiom 

14
Как отладить ошибки повреждения кучи?
Я отлаживаю (нативное) многопоточное приложение C ++ в Visual Studio 2008. В случайных, на первый взгляд случаях я получаю сообщение об ошибке «Windows запустила точку останова ...» с замечанием, что это может быть связано с повреждением куча. Эти ошибки не всегда сразу приводят к сбою приложения, хотя, скорее всего, вскоре …
165 c++  windows  debugging  heap 

9
Есть ли замена для unistd.h для Windows (Visual C)?
Я портирую относительно простую консольную программу, написанную для Unix, на платформу Windows ( Visual C ++ 8.0 ). Все исходные файлы включают в себя "unistd.h", который не существует. Удаляя его, я получаю жалобы на отсутствие прототипов для 'srandom', 'random' и 'getopt'. Я знаю, что могу заменить случайные функции, и я …
165 c++  c  windows  portability  unistd.h 

3
Почему я должен избегать std :: enable_if в сигнатурах функций
Скотт Мейерс опубликовал содержание и статус своей следующей книги EC ++ 11. Он написал, что один пункт в книге может быть «Избегайте std::enable_ifподписей функций» . std::enable_if может использоваться в качестве аргумента функции, в качестве возвращаемого типа или в качестве шаблона класса или параметра шаблона функции для условного удаления функций или …

3
Что такое цель C ++? [закрыто]
Трудно сказать, что здесь спрашивают. Этот вопрос является двусмысленным, расплывчатым, неполным, чрезмерно широким или риторическим, и на него нельзя дать разумный ответ в его нынешней форме. Чтобы получить разъяснения по этому вопросу, чтобы его можно было снова открыть, посетите справочный центр . Закрыто 7 лет назад . Что такое Objective …

20
«For (;;)» быстрее, чем «while (TRUE)»? Если нет, то почему люди используют это?
for (;;) { //Something to be done repeatedly } Я видел, как подобные вещи часто используются, но я думаю, что это довольно странно ... Разве не было бы намного яснее сказать while(true)или что-то в этом роде? Я предполагаю, что (как причина, по которой многие программисты прибегают к загадочному коду), это …

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