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

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

6
Функція, що повертає лямбда-вираз
Цікаво, чи можливо написати функцію, яка повертає лямбда-функцію в C ++ 11. Звичайно, одна проблема полягає в тому, як оголосити таку функцію. Кожна лямбда має тип, але цей тип не виражається в C ++. Я не думаю, що це буде працювати: auto retFun() -> decltype ([](int x) -> int) { …
88 c++  function  c++11  lambda 

4
Значення int (*) (int *) = 5 (або будь-яке ціле значення)
Я не можу зрозуміти це: int main() { int (*) (int *) = 5; return 0; } Вищевказане призначення компілюється з g ++ c ++ 11. Я знаю, що int (*) (int *)це вказівник на функцію, яка приймає (int *)аргумент як аргумент і повертає int, але я не розумію, як …

6
Чому я не можу створити вектор лямбда (того самого типу) в C ++ 11?
Я намагався створити вектор лямбда, але не вдалося: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 До рядка №2 він компілюється чудово . Але рядок №3 містить помилку компіляції : помилка: немає функції відповідності для виклику 'std :: vector <main …
88 c++  vector  lambda  c++11 

10
фатальна помилка LNK1104: не вдається відкрити файл 'libboost_system-vc110-mt-gd-1_51.lib'
Здається, я не можу змусити це працювати. Я зробив простий консольний додаток (який залежить від websocket++бібліотеки), якому потрібні Boostбібліотеки .. але при спробі скомпілювати я отримую: фатальна помилка LNK1104: не вдається відкрити файл 'libboost_system-vc110-mt-gd-1_51.lib' Однак я зробив bjam, який створив lib, (boost_root)/stage/libsі прив'язав шлях до libs до компілятора C++/Additionnals includes. …
88 c++  boost 


3
Безлад у ініціалізації за замовчуванням, значенням та нулем
Я дуже заплутаний щодо значення- та за замовчуванням та нульової ініціалізації. і особливо коли вони застосовують різні стандарти C ++ 03 та C ++ 11 (і C ++ 14 ). Я цитую і намагаюся викласти справді хорошу відповідь Value- / Default- / Zero- Init C ++ 98 і C ++ …
88 c++  c++11  c++14  c++03  c++98 

2
Плутанина, коли метод boost :: asio :: io_service запускає / розблоковує метод запуску
Будучи початківцем Boost.Asio, мене бентежить io_service::run(). Буду вдячний, якщо хтось може пояснити мені, коли цей метод блокує / розблокує. У документації зазначено: Ці run()функціональні блоки , поки вся робота не буде закінчена , і більше немає оброблювачів бути посланим, або до тих пір , io_serviceпоки не припинилося. Кілька потоків можуть …
88 c++  boost-asio 

2
явна спеціалізація функції-члена класу шаблону
Мені потрібно спеціалізуватись на функції члена шаблону для якогось типу (скажімо, подвійного ). Він чудово працює, хоча Xсам клас не є класом шаблону, але коли я роблю його, шаблон GCC починає видавати помилки під час компіляції. #include <iostream> #include <cmath> template <class C> class X { public: template <class T> …

4
Як працює бібліотека імпорту? Деталі?
Я знаю, що для вундеркіндів це може здатися цілком базовим. Але я хочу зробити це кристально чистим. Коли я хочу використовувати DLL Win32, зазвичай я просто викликаю API, такі як LoadLibrary () та GetProcAdderss (). Але нещодавно я розробляю DirectX9, і мені потрібно додати файли d3d9.lib , d3dx9.lib тощо. Я …
88 c++  c  windows  visual-c++ 

8
Створення простору імен C ++ у заголовку та джерелі (cpp)
Чи існує якась різниця між загортанням вмісту файлу заголовка та файлу cpp у простір імен чи обгортанням лише вмісту заголовка, а потім використанням простору імен у файлі cpp? Під різницею я маю на увазі будь-яке покарання за продуктивність або дещо іншу семантику, яка може спричинити проблеми або щось, що мені …
88 c++  namespaces 

5
Передача спільних покажчиків як аргументів
Якщо я оголошую об'єкт, загорнутий у спільний вказівник: std::shared_ptr<myClass> myClassObject(new myClass()); тоді я хотів передати це як аргумент методу: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } Чи вищезгадане просто збільшує кількість посилань на shared_pt, і все круто? Або це залишає звисаючий вказівник? Ви все ще …

3
Динамічно завантажувати функцію з DLL
Я трохи переглядаю файли .dll, розумію їх використання та намагаюся зрозуміти, як ними користуватися. Я створив файл .dll, який містить функцію, яка повертає ціле число з ім'ям funci () використовуючи цей код, я (думаю) я імпортував файл .dll у проект (скарг немає): #include <windows.h> #include <iostream> int main() { HINSTANCE …
88 c++  winapi  dll 

7
Чому ми не можемо оголосити std :: vector <AbstractClass>?
Провівши досить багато часу на розробці в C #, я помітив, що якщо ви оголосите абстрактний клас з метою використання його як інтерфейсу, ви не можете створити екземпляр вектора цього абстрактного класу для зберігання екземплярів дочірніх класів. #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: …


5
Чому я можу отримати доступ до приватних змінних у конструкторі копіювання?
Я дізнався, що ніколи не можу отримати доступ до приватної змінної, лише за допомогою функції get у класі. Але чому тоді я можу отримати до нього доступ у конструкторі копіювання? Приклад: Field::Field(const Field&amp; f) { pFirst = new T[f.capacity()]; pLast = pFirst + (f.pLast - f.pFirst); pEnd = pFirst + …

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