c++- все статьи тега ➜ страница 34
Как можно реализовать сопрограммы в языке C++
Я сомневаюсь, что это можно сделать переносимо, но есть ли какие-либо решения? Я думаю,что это можно сделать, создав альтернативный стек и сбросив SP, BP и IP при входе в функцию, а также получив выход сохранить IP и восстановить SP+BP. Деструкторы и безопасность исключений кажутся сложными, но разрешимыми. Это было сделано? Это невозможно? ...
Блокировка чтения / записи в C++
Я ищу хороший замок для чтения / записи в C++. У нас есть случай использования одного нечастого писателя и многих частых читателей, и мы хотели бы оптимизировать для этого. Предпочтительно я хотел бы кросс-платформенное решение, однако Windows только один будет приемлемым. ...
Как сделать этот объект C++ не копируемым?
посмотреть название. Я: class Foo { private: Foo(); public: static Foo* create(); } что мне нужно сделать отсюда, чтобы сделать Foo не копируемым? спасибо! ...
Возвращает ли оператор copy значения
Мне интересно об этом из-за проблем области. Например, рассмотрим код typedef struct { int x1;/*top*/ int x2;/*bottom*/ int id; } subline_t; subline_t subline(int x1, int x2, int id) { subline_t t = { x1, x2, id }; return t; } int main(){ subline_t line = subline(0,0,0); //is line garbage or isn't it? the reference //to subline_t t goes out of scope, so the only way this wouldn't be garbage //is if return copies } Итак, мой вопрос в том, будет ли оператор r ...
Когда инициализируются статические члены класса C++?
Кажется, нет простого ответа на этот вопрос, но есть ли какие-либо предположения, которые можно безопасно сделать о том, когда можно получить доступ к статическому полю класса? EDIT: единственное безопасное предположение заключается в том, что все статики инициализируются до начала работы программы (вызов main). Итак, пока я не ссылаюсь на статику из другого кода статической инициализации, мне не о чем беспокоиться? ...
Повышение.ASIO-клиентская библиотека HTTP (например, libcurl) [закрыто]
Я ищу современную библиотеку HTTP C++, потому что недостатки libcurl трудно обойти с помощью оболочек C++. Решения на основе Boost.Предпочтение отдается ASIO, которая стала де-факто библиотекой C++ TCP. ...
Как создать простое консольное приложение Qt в C++?
Я пытался создать простое консольное приложение, чтобы попробовать XML-парсер Qt. Я начал проект в VS2008 и получил этот шаблон: int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); return a.exec(); } поскольку мне не нужна обработка событий, мне было интересно, могу ли я попасть в беду, если я пренебрегаю созданием QCoreApplication и запуском цикла событий. В документах говорится, что это рекомендуется в большинстве случаев. ради любопытства, однако, мне интересно, ка ...
Расширение пакета вариационных шаблонов
Я пытаюсь изучить вариативные шаблоны и функции. Я не могу понять, почему этот код не компилируется: template<typename T> static void bar(T t) {} template<typename... Args> static void foo2(Args... args) { (bar(args)...); } int main() { foo2(1, 2, 3, "3"); return 0; } когда я компилирую его не удается с ошибкой: ошибка C3520: 'args': пакет параметров должен быть расширен в этом контексте (в функции foo2). ...
Как построить библиотеку импорта (.lib) и DLL в Visual C++?
Я хочу иметь один проект Visual Studio, который создает DLL-файл и библиотеку импорта (.файл lib). (Библиотека импорта-это статически связанная библиотека, которая заботится о загрузке этого DLL-файла в другие проекты, которые его используют). поэтому я пошел в Visual Studio C++ 2008 Express Edition, создал новый проект библиотеки классов типа и установил " тип конфигурации "как" Dyanamic Library (.файл DLL.") но когда я создаю решение, единственный соответствующий выходной файл Я вижу, что э ...
Как разобрать ini-файл с помощью Boost
у меня есть ini-файл, который содержит некоторые примеры значений таких как: [Section1] Value1 = 10 Value2 = a_text_string Я пытаюсь загрузить эти значения и распечатать их в своем приложении с помощью Boost, но я не понимаю, как это сделать в C++. Я искал в этом форуме, чтобы найти некоторые примеры (я всегда использовал C и поэтому я не очень хорош в C++), но я нашел только примеры о том, как читать значения из файла все сразу. мне нужно загрузить только одно значение, когда я хочу, как s ...
Доступ К Переменным Среды В C++
Я хотел бы иметь доступ к $HOME переменная окружения в программе на C++, которую я пишу. Если бы я писал код на C, я бы просто использовать getenv() функция, но мне было интересно, есть ли лучший способ сделать это. Вот код, который у меня есть до сих пор: std::string get_env_var( std::string const & key ) { char * val; val = getenv( key.c_str() ); ...
Почему "использование пространства имен X;"не допускается на уровне класса/структуры?
class C { using namespace std; // error }; namespace N { using namespace std; // ok } int main () { using namespace std; // ok } редактировать: хочу знать мотивацию за ним. ...
Что бы это было " Здравствуй, Мир!"пример для "std:: ref"?
может кто-нибудь дать простой пример, который демонстрирует функциональность std::ref? Я имею в виду пример, в котором используются некоторые другие конструкции (например, кортежи или шаблоны типов данных)только если невозможно объяснить std::ref без них. я нашел два вопроса о std::refздесь и здесь. Но в первом речь идет об ошибке в компиляторе, а во втором-примеры использования std::ref не содержат std::ref и они включают кортежи и шаблоны типов данных, которые делают понимание этих примеров с ...
Изменены правила для защищенных конструкторов в C++17?
у меня есть этот тест: struct A{ protected: A(){} }; struct B: A{}; struct C: A{ C(){} }; struct D: A{ D() = default; }; int main(){ (void)B{}; (void)C{}; (void)D{}; } и gcc и clang компилируют его в режиме C++11 и C++14. Оба сбоя в режиме C++17: $ clang++ -std=c++17 main.cpp main.cpp:7:10: error: base class 'A' has protected default constructor (void)B{}; ^ main.cpp:1:22: note: declared protected here struct A{ protected: A(){} }; ^ ...
Изменился ли стандарт C++ в отношении использования неопределенных значений и неопределенного поведения в C++14?
как описано в разделе инициализация влечет за собой преобразование lvalue-to-rvalue? Это int x = x; UB? в стандарте C++ есть удивительный пример в разделе 3.3.2пункт декларации, в котором int инициализируется собственным неопределенным значением: int x = 12; { int x = x; } здесь второй x инициализируется своим собственным (неопределенным) значением. - пример] какой ответ Йоханнеса на этот вопрос указывает на это неопределенное поведение, так как он требует это значение lvalue-на-прав ...
Как создать функцию паузы / ожидания с помощью Qt?
Я играю с Qt, и я хочу создать простую паузу между двумя командами. Однако это, кажется, не позволит мне использовать Sleep(int mili);, и я не могу найти никаких очевидных функций ожидания. Я в основном просто делаю консольное приложение для тестирования некоторого кода класса, который позже будет включен в правильный графический интерфейс Qt, поэтому сейчас я не беспокоюсь о том, чтобы сломать всю управляемую событиями модель. ...
Инициализировать статические переменные в классе C++?
Я заметил, что некоторые из моих функций в классе на самом деле не имеют доступа к объекту, поэтому я сделал их static. Затем компилятор сказал мне, что все переменные, к которым они также должны быть статическими – ну, вполне понятно до сих пор. У меня есть куча строковых переменных, таких как string RE_ANY = "([^n]*)"; string RE_ANY_RELUCTANT = "([^n]*?)"; и так далее в классе. Я тогда сделал их все static const потому что они никогда не меняются. Однако моя программа компилируется только ...
Запись определения функции в заголовочные файлы на C++
У меня есть класс, который имеет много мелких функций. Под малыми функциями я подразумеваю функции, которые не выполняют никакой обработки, а просто возвращают литеральное значение. Что-то вроде: string Foo::method() const{ return "A"; } Я создал заголовочный файл " Foo.h "и исходный файл" Foo.СРР." Но поскольку функция очень мала, я думаю о том, чтобы поместить ее в сам файл заголовка. У меня есть следующие вопросы: есть ли производительность или другие проблемы, если я ставлю эти опре ...
Как сравнить указатели?
Предположим, у меня есть 2 указателя: int *a = something; int *b = something; если я хочу сравнить их и посмотреть, указывают ли они на одно и то же место (a == b) работает? ...
общие ptr и слабые различия ptr
Я читаю книгу Скотта Мейерса " эффективный C++". Было упомянуто, что есть tr1::shared_ptr и tr1::weak_ptr действуют как встроенные указатели, но они отслеживают сколько tr1::shared_ptrs указывает на объект. это называется подсчетом ссылок. Это хорошо работает в предотвращении утечек ресурсов в ациклических структурах данных, но если два или более объектов содержат tr1::shared_ptrs Так что цикл формируется, цикл может держать отсчет ссылок друг друга выше нуля, даже если все внешние указатели ...