Klammern in C ++ werden an vielen Stellen verwendet: z. B. in Funktionsaufrufen und Gruppierungsausdrücken, um die Priorität von Operatoren zu überschreiben. Abgesehen von illegalen zusätzlichen Klammern (wie z. B. Argumentlisten für Funktionsaufrufe) ist eine allgemeine, aber nicht absolute Regel von C ++, dass zusätzliche Klammern niemals schaden : 5.1 …
Ich habe auto_ptrgehört, dass es in C ++ 11 veraltet ist. Was ist der Grund dafür? Auch ich würde gerne den Unterschied zwischen auto_ptrund kennen shared_ptr.
Wenn ich versuche, diesen Code (VS2010) zu kompilieren, wird folgende Fehlermeldung angezeigt: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results<std::string::const_iterator> what; boost::match_flag_type flags = boost::match_default; // Look for lines that either …
Ich habe das immer gefragt, aber ich habe nie eine wirklich gute Antwort erhalten; Ich denke, dass fast jeder Programmierer vor dem Schreiben der ersten "Hallo Welt" auf einen Satz wie "Makro sollte niemals verwendet werden", "Makro ist böse" usw. gestoßen ist. Meine Frage lautet: Warum? Gibt es mit dem …
Wie würde eine std::maperweiterte Initialisiererliste aussehen, wenn sie überhaupt existiert ? Ich habe einige Kombinationen von ... versucht, alles, was ich mir mit GCC 4.4 vorstellen konnte, aber nichts gefunden, was kompiliert wurde.
Ich versuche mit g++und entweder den Flags -std=c++11oder zu kompilieren c++0x. Ich erhalte jedoch diesen Fehler cc1plus: error: unrecognized command line option "-std=c++11" g ++ --version g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. …
Ich habe std::vectorObjekte einer bestimmten Klasse A. Die Klasse ist nicht trivial und hat Kopierkonstruktoren und Verschiebungskonstruktoren definiert. std::vector<A> myvec; Wenn ich den Vektor mit AObjekten fülle (z. B. myvec.push_back(a)), wird der Vektor größer und verwendet den Kopierkonstruktor A( const A&), um neue Kopien der Elemente im Vektor zu instanziieren. …
Was ist die beste Methode, um shared_ptreinen abgeleiteten Typ an eine Funktion zu übergeben, die shared_ptreinen Basistyp verwendet? Ich übergebe im Allgemeinen shared_ptrs als Referenz, um eine unnötige Kopie zu vermeiden: int foo(const shared_ptr<bar>& ptr); aber das funktioniert nicht, wenn ich versuche, so etwas zu tun int foo(const shared_ptr<Base>& ptr); …
Ich arbeite mit der Erinnerung an einige Lambdas in C ++, aber ich bin ein bisschen verwirrt über ihre Größe. Hier ist mein Testcode: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << …
Ich versuche so etwas zu tun: #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return 0; } aber ich bekomme diesen Fehler: error: missing binary operator before token "(" Wie kann …
Ich bin ein einfacher Programmierer. Die Variablen meiner Klassenmitglieder bestehen meistens aus POD-Typen und STL-Containern. Aus diesem Grund muss ich selten Zuweisungsoperatoren oder Kopierkonstruktoren schreiben, da diese standardmäßig implementiert sind. Wenn ich std::moveObjekte verwende, die nicht beweglich sind, wird der Zuweisungsoperator verwendet, was bedeutet, dass dies std::moveabsolut sicher ist. Da …
Stellen wir uns vor, wir haben eine Struktur für 3 Doubles mit einigen Mitgliedsfunktionen: struct Vector { double x, y, z; // ... Vector &negate() { x = -x; y = -y; z = -z; return *this; } Vector &normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= …
Der folgende Code ist ziemlich trivial und ich habe erwartet, dass er gut kompiliert werden kann. struct A { struct B { int i = 0; }; B b; A(const B& _b = B()) : b(_b) {} }; Ich habe diesen Code mit g ++ Version 4.7.2, 4.8.1, clang ++ …
Ich versuche, das folgende Thread-Pool-Programm zu kompilieren, das bei der Codeüberprüfung veröffentlicht wurde, um es zu testen. /codereview/55100/platform-independant-thread-pool-v4 Aber ich bekomme die Fehler threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: …
std::arrayist den C-Arrays weit überlegen. Und selbst wenn ich mit Legacy-Code zusammenarbeiten möchte, kann ich ihn einfach verwenden std::array::data(). Gibt es einen Grund, warum ich jemals ein Array der alten Schule haben möchte?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.