2013-08-06 22 views
31

Sanırım oldukça açıklayıcı - C++ 11 özelliklerini kullanamıyorum. yapmam.hata: 'unique_ptr' bir 'std' üyesi değil

[email protected]:~/Desktop$ g++ main.cpp -o run --std=c++11 
main.cpp: In function ‘int main()’: 
main.cpp:25:2: error: ‘unique_ptr’ is not a member of ‘std’ 
main.cpp:25:24: error: expected primary-expression before ‘>’ token 
main.cpp:25:49: error: ‘smart_obj’ was not declared in this scope 

Not denedim:

İşte
[email protected]:~/Desktop$ g++ --version 
g++ (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3 
Copyright (C) 2012 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

ben kod derleme nasıl:

#include <cstdlib> 
#include <iostream> 

class Object { 
    private: 
     int value; 

    public: 
     Object(int val) { 
      value = val; 
     } 

     int get_val() { 
      return value; 
     } 

     void set_val(int val) { 
      value = val; 
     } 
}; 

int main() { 

    Object *obj = new Object(3); 
    std::unique_ptr<Object> smart_obj(new Object(5)); 
    std::cout << obj->get_val() << std::endl; 
    return 0; 
} 

İşte gr ++ benim sürümü: Burada

kod bu -std=c++11 ve -std=c++0x numaralı telefonların hiçbiri boş bırakılamaz.

Ubuntu 12.04 LTS bir Intel x64 makinesindeki bir flash sürücüden çalıştırıyorum. // tr:

+1

[Bu referans] (http c++11 bayrağıyla derlemek gerektiğini bildiği gibi unique_ptr ve shared_ptr

#include <memory> 

tanımlanır başlığı dahil gerekir .cppreference.com/w/cpp/memory/unique_ptr) dahil etmeniz gereken bir başlık vermenizi ister. – juanchopanza

cevap

54

Sen zaten

g++ main.cpp -o run -std=c++11 
//    ^
+1

Üzgünüm, C++'ya yeni geliyorum. Neden 'da tanımlanmışsa std :: unique_ptr olarak kullanılır? –

+0

@AoI: "std" ad alanıdır. "hafıza" sadece tanımlandığı başlık dosyasını gösterir. – JohnTortugo

İlgili konular