Articles of c ++ 11

So geben Sie ein std :: string.c_str () zurück

Ich habe eine Methode, die den konstanten Zeichenzeiger zurückgibt. Es verwendet einen std::string und gibt schließlich seinen c_str() . const char * returnCharPtr() { std::string someString; // some processing!. return someString.c_str(); } Ich habe einen Bericht von COVERITY Tool, dass das oben genannte keine gute Verwendung ist. Ich habe gegoogelt und festgestellt, dass der Char-pointers […]

Überprüfen Sie bei der Kompilierzeit, ob das Vorlagenargument ungültig ist

Ich versuche, die Windows-API-functionen zu umbrechen, um Fehler zu überprüfen, wenn ich dies wähle. Wie ich in einer früheren SO-Frage herausgefunden habe, könnte ich eine Template-function verwenden, um die API-function aufzurufen, und dann GetLastError() aufrufen, um einen eventuell festgestellten Fehler abzurufen. Ich könnte diesen Fehler dann an meine Error class weitergeben, um mich darüber zu […]

C ++ greift auf statische Member mit dem Nullzeiger zu

Kürzlich versucht das folgende Programm und es kompiliert, läuft gut und produziert erwartete Ausgabe anstelle von Laufzeiterrors. #include class demo { public: static void fun() { std::cout<fun(); std::cout<a; return 0; } Wenn ein nicht initialisierter pointers verwendet wird, um auf classn- und / oder Strukturelemente zuzugreifen, ist das Verhalten nicht definiert, aber es ist auch […]

Wird eine auf C ++ 11-Bereich basierende Schleife für jeden Zyklus ausgewertet?

for(auto& entity : memoryManager.getItems()) entity->update(mFrameTime); Wenn memoryManager 1000 Elemente enthält, wird memoryManager.getItems() 1000-mal oder nur zu Beginn der Schleife aufgerufen? Führt der Compiler eine Optimierung mit -O2 (oder -O3) durch? ( memoryManager.getItems() gibt ein std::vector& ) zurück

Fehler C2679: binär ‘<<': kein Operator gefunden, der einen rechten Operanden vom Typ 'std :: string' verwendet (oder es gibt keine akzeptable Konvertierung)

Hier ist mein Code, wie behebe ich diesen Fehler? #include “stdafx.h” #include using namespace std; int main() { string title = “THE WORLD OF PIRATES”; cout << title << endl; cout << " Welcome to the world of pirates"; cin.get(); return 0; } Der Fehler ist binary ‘<<' : no operator found which takes a […]

Ist ein verschobener Vektor immer leer?

Ich weiß, dass die Norm im Allgemeinen wenig Anforderungen an die Werte stellt, die verschoben wurden von: N3485 17.6.5.15 [lib.types.movefrom] / 1: Objekte von Typen, die in der C ++ – Standardbibliothek definiert sind, können von (12.8) verschoben werden. Verschiebeoperationen können explizit angegeben oder implizit generiert werden. Sofern nicht anders angegeben, müssen solche verschobenen Objekte […]

Spezifizieren Sie einen Typ für alle Argumente, die an variadic function oder variadic template function w / out über Array, vector, structs usw. übergeben werden?

Ich erstelle eine function (möglicherweise Member-function, nicht, dass es wichtig ist … vielleicht tut es?), Die eine unbekannte Anzahl von Argumenten akzeptieren muss, aber ich möchte, dass sie alle den gleichen Typ haben. Ich weiß, ich könnte ein Array oder einen Vektor übergeben, aber ich möchte die Liste der Argumente direkt ohne zusätzliche Struktur oder […]

Wie ändere ich den Modus vom C ++ 98-Modus in Dev-C ++ in einen Modus, der C ++ 0x unterstützt (Bereichsbasiert für)?

Ich lerne gerade, wie man bereichsbasierte for-Schleifen schreibt, aber das einzige Problem ist, dass mein Compiler, Orwell Dev-C ++, es anscheinend nicht in seinem Standardmodus unterstützt (was c ++ 98 ist). Wie kann ich diesen Modus zu einem anderen ändern, der diese function (und andere Features von C ++ 0x) unterstützt? Vielen Dank. Ebenfalls: Dies […]

std :: to_string – mehr als die Instanz der überladenen function entspricht der Argumentliste

counter ist ein int void SentryManager::add(std::string name,std::shared_ptr){ name = name + std::to_string(counter); } Was wäre der beste Weg, um diesen Fehler zu stoppen? Als ich faul war, habe ich den Int long long (oder so) gemacht, aber ich bin mir sicher, dass es einen besseren Weg gibt, das zu lösen. Fehlermeldung: sentrymanager.cpp(8): error C2668: ‘std::to_string’ […]

Einen bewegten Container wiederverwenden?

Wie kann ein verschobener Container korrekt wiederverwendet werden? std::vector container; container.push_back(1); auto container2 = std::move(container); // ver1: Do nothing //container2.clear(); // ver2: “Reset” container = std::vector() // ver3: Reinitialize container.push_back(2); assert(container.size() == 1 && container.front() == 2); Von was ich im C ++ 0x Standardentwurf gelesen habe; ver3 scheint der richtige Weg zu sein, da […]