Запитання з тегом «c++»

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.

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

8
Захоплення лямбда як посилання на const?
Чи можливо зафіксувати через посилання const в лямбдаському виразі? Я хочу, щоб завдання, позначене нижче, не вдалося, наприклад: #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( …
166 c++  c++11  lambda  c++14 

2
точне вказівка ​​«умовний стрибок або переміщення залежить від неініціалізованого значення (s)» valgrind повідомлення
Тому я отримував від valgrind таємниче неініціалізоване повідомлення про значення, і це була таємниця, звідки походить погане значення. Здається, що valgrind показує місце, де закінчується використання неітіалізованого значення, але не походження неініціалізованої величини. ==11366== Conditional jump or move depends on uninitialised value(s) ==11366== at 0x43CAE4F: __printf_fp (in /lib/tls/i686/cmov/libc-2.7.so) ==11366== by …
166 c++  valgrind 

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

9
Чому енергонезалежність не вважається корисною в багатопотоковому програмуванні на C або C ++?
Як показано у цій відповіді, яку я нещодавно опублікував, я, мабуть, розгублений щодо корисності (або її відсутності) volatileв контекстах багатопотокового програмування. Моє розуміння таке: щоразу, коли змінна може бути змінена поза потоком контролю фрагмента коду, що отримує доступ до неї, ця змінна повинна бути оголошена такою volatile. Обробники сигналів, регістри …

7
Чому я повинен оголошувати віртуальний деструктор для абстрактного класу в C ++?
Я знаю, що декларувати віртуальні деструктори для базових класів у C ++ є хорошою практикою, але чи завжди важливо оголошувати virtualдеструктори навіть для абстрактних класів, які функціонують як інтерфейси? Наведіть, будь ласка, кілька причин та прикладів.

11
Чи справді ідіома pImpl використовується на практиці?
Я читаю книгу Герба Саттера "Винятковий С ++", і в цій книзі я дізнався про ідіому pImpl. В основному, ідея полягає у створенні структури для privateоб'єктів а classта динамічно розподілити їх, щоб зменшити час компіляції (а також краще приховати приватні реалізації). Наприклад: class X { private: C c; D d; …
165 c++  oop  pimpl-idiom 

11
Чи видаляє вказівник на підклас виклик деструктора базового класу?
У мене є an, class Aякий використовує розподіл пам'яті купи для одного з його полів. Клас А інстанціюється і зберігається як поле вказівника в іншому класі ( class B. Коли я закінчую з об'єктом класу B, я дзвоню delete, який, як я вважаю, називає деструктором ... Але це також називає …

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 років тому . Що таке об'єктив C ++ …

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те, чого намагається досягти сильно набраний перерахунок, але є …

15
На практиці, чому різні компілятори обчислюють різні значення int x = ++ i + ++ i ;?
Розглянемо цей код: int i = 1; int x = ++i + ++i; У нас є деякі здогади щодо того, що компілятор може зробити для цього коду, припускаючи, що він компілюється. обидва ++iповертаються 2, в результаті чого x=4. один ++iповертається, 2а інший повертається 3, в результаті чого x=5. обидва ++iповертаються …

20
Чи "for (;;)" швидше, ніж "while (ІСТИНА)"? Якщо ні, то чому люди його використовують?
for (;;) { //Something to be done repeatedly } Я бачив, як подібні речі багато використовували, але я вважаю, що це досить дивно ... Чи не було б набагато зрозуміліше сказати while(true), чи щось у цьому напрямку? Я здогадуюсь, що (як це причина багатьох програмістів, що вдаються до криптовалютного коду), …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.