2015-05-04 11 views
7

Ich habe ein einfaches Qt-Projekt. I include <memory>, aber std :: unique_ptr ist nicht verfügbar. Ich weiß, dass ich Qt spezifische intelligente Zeiger verwenden sollte, aber ich muss ein größeres Projekt einschließen, das std :: unique_ptr enthält.unique_ptr in Qt-Projekt

Was kann ich tun?

Danke!

+1

Qt hat seine eigene intelligente und gemeinsame Zeiger, wenn Sie nicht über eine c haben ++ 11-Compiler. – drescherjm

+0

Welchen Compiler benutzen Sie? Verwenden Sie C++ 11/14? – NathanOliver

+0

Wie kann ich das von Qt Creator sehen? – yonutix

Antwort

7

C++ 11 ist für Smart Pointer erforderlich. Abhängig von Ihrer Version von Qt:

Fügen Sie CONFIG += c++11 zu Ihrer .pro-Datei hinzu, wenn Sie Qt5 und höher haben. Es muss <memory> wie Simon erwähnt haben.

Wenn Sie eine frühere Version als QT5 haben, versuchen Sie dies und fügte hinzu:
QMAKE_CXXFLAGS += -std=c++11

+1

Es funktionierte mit QMAKE_CXXFLAGS + = -std = C++ 11 – yonutix

3

Fügen Sie Speicher:

#include <memory> 

Konfigurieren Sie Ihr Qt-Projekt C 11 ++ verwenden. In Ihre .proDatei:

CONFIG += c++11 

Wenn das das Problem nicht lösen, fügen Sie bitte eine detaillierte Fehlermeldung.

+0

Fehler: 'unique_ptr' ist kein Mitglied von 'std' – yonutix

+1

Meine .pro-Datei sieht so aus: http://pastebin.com/wMKpDHAX aber es scheint nicht zu funktionieren (Speicher enthalten) – yonutix

+0

Wie mache ich das für ein CMake-Projekt eröffnet? – raaj