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

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

11
Как удалить элемент из вектора stl с определенным значением?
Я просматривал документацию API для вектора stl и заметил, что в классе вектора не было метода, который позволял бы удалить элемент с определенным значением. Это похоже на обычную операцию, и кажется странным, что для этого нет встроенного способа.
146 c++  stl 

9
Есть ли способ создать экземпляры объектов из строки, содержащей имя их класса?
У меня есть файл: Base.h class Base; class DerivedA : public Base; class DerivedB : public Base; /*etc...*/ и еще один файл: BaseFactory.h #include "Base.h" class BaseFactory { public: BaseFactory(const string &sClassName){msClassName = sClassName;}; Base * Create() { if(msClassName == "DerivedA") { return new DerivedA(); } else if(msClassName == "DerivedB") …

2
CMake: структура проекта с модульными тестами
Я пытаюсь структурировать свой проект, чтобы включить производственные источники (во srcвложенной папке) и тесты (во testвложенной папке). Я использую CMake для создания этого. В качестве минимального примера у меня есть следующие файлы: CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) src / CMakeLists.txt: add_executable (demo main.cpp sqr.cpp) src …

3
Каково назначение одного знака фунта / хеша (#) на отдельной строке в препроцессоре C / C ++?
Я просматривал исходный код библиотек Boost и заметил, что часто встречаются знаки с одним фунтом без каких-либо прикрепленных к ним директив препроцессора. Я прочитал руководство по препроцессору GCC и руководство по спецификации и ничего не могу найти по этому поводу. (1) #ifndef BOOST_CONFIG_HPP (2) # include <boost/config.hpp> (3) #endif (4) …
145 c++  c  boost  c-preprocessor 

5
Почему (% 256) отличается от (a & 0xFF)?
Я всегда предполагал, что при выполнении (a % 256)оптимизатора, естественно, будет использоваться эффективная побитовая операция, как если бы я писал (a & 0xFF). При тестировании на проводнике компилятора gcc-6.2 (-O3): // Type your code here, or load an example. int mod(int num) { return num % 256; } mod(int): mov …
145 c++  optimization 


4
Использование переменной-члена в лямбда-списке захвата внутри функции-члена
Следующий код компилируется с gcc 4.5.1, но не с VS2010 SP1: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int main() …


6
Может ли класс перечисления C ++ иметь методы?
У меня есть класс enum с двумя значениями, и я хочу создать метод, который получает значение и возвращает другое. Я также хочу поддерживать безопасность типов (поэтому я использую класс enum вместо enum). http://www.cplusplus.com/doc/tutorial/other_data_types/ ничего не упоминает о методах. Однако у меня сложилось впечатление, что класс любого типа может иметь методы.
145 c++  methods  enums 

6
Безопасна ли реализация Мейерсом потока шаблона Singleton?
SingletonБезопасна ли следующая реализация с использованием отложенной инициализации потока (Meyers 'Singleton)? static Singleton& instance() { static Singleton s; return s; } Если нет, то почему и как сделать это потокобезопасным?

1
Какая логика стоит за ключевым словом «using» в C ++?
Какая логика стоит за ключевым словом «using» в C ++? Он используется в разных ситуациях, и я пытаюсь выяснить, есть ли у них что-то общее, и есть причина, по которой ключевое слово «using» используется как таковое. using namespace std; // to import namespace in the current namespace using T = …
145 c++  c++11 

16
Файлы заголовков переопределения C ++ (winsock2.h)
Как предотвратить двойное включение файлов заголовков? Проблема в том, что я включаюв MyClass.h, а затем я включаю MyClass.h во многие файлы, поэтому он включается несколько раз, и возникает ошибка переопределения. Как предотвратить? Я использую #pragma once вместо включения охранников, и я думаю, что это нормально. MyClass.h: // MyClass.h #pragma once …
145 c++  header  redefinition 

5
Определить статический метод в исходном файле с объявлением в заголовочном файле на C ++
У меня небольшие проблемы с работой со статическими методами в C ++ Пример .h: class IC_Utility { public: IC_Utility(); ~IC_Utility(); std::string CP_PStringToString( const unsigned char *outString ); void CP_StringToPString( std::string& inString, unsigned char *outString, short inMaxLength ); static void CP_StringToPString( std::string& inString, unsigned char *outString); void CP_StringToPString( FxString& inString, FxUChar …

5
Диаграмма состояний ускорения против машины состояний мета
Очевидно, boost содержит две отдельные библиотеки для конечных автоматов: Statechart и Meta State Machine (MSM). Слоганы дают очень похожие описания: Boost.Statechart - Конечные автоматы произвольной сложности могут быть реализованы в легко читаемом и поддерживаемом коде C ++. Meta State Machine - высокопроизводительная библиотека для выразительных конечных автоматов UML2. Знаете ли …

13
Удобная инициализация структуры C ++
Я пытаюсь найти удобный способ инициализировать структуры C ++ «pod». Теперь рассмотрим следующую структуру: struct FooBar { int foo; float bar; }; // just to make all examples work in C and C++: typedef struct FooBar FooBar; Если я хочу удобно инициализировать это на C (!), Я могу просто написать: …

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