2015-01-21 1231 views
-2

我試圖更新一些我的代碼,並試圖包含make_sharedC++ 11:'make_shared'不是'std'的成員

我創建了一個名爲Mail類發送電子郵件,現在我想將其包含:

auto m = std::make_shared<Mail>(); 

的問題是,我使用一個Makefile:

SHELL = /bin/sh 
SYSTEM = $(shell uname) 
C++ = g++ 
CC = gcc 
DFLAGS = -DGHOST_MYSQL 
OFLAGS = -O3 
LFLAGS = -lmysqlclient_r -lboost_date_time -lboost_thread -lboost_system -lboost_filesystem -lgmp 
CFLAGS = -std=c++0x 

的編譯有這標誌還包括:

g++ -o mail.o -std=c++0x -O3 mail.cpp 

但即時得到以下錯誤:

error: 'make_shared' is not a member of 'std' 
    auto m = std::make_shared<Mail>(); 
      ^
error: expected primary-expression before '>' token 
    auto m = std::make_shared<Mail>(); 
           ^
error: expected primary-expression before ')' token 
    auto m = std::make_shared<Mail>(); 
           ^
make: *** [ghost.o] Error 1 

我在這裏犯了什麼錯誤?

+2

1)什麼是你的編譯器的版本? 2)你有沒有'#包括'? – 2015-01-21 11:55:42

回答

4

make_shared需要你到#include <memory>

我不知道你爲什麼要看你的Makefile這個...?:-)

+0

哦,我的天啊,那有點尷尬:X謝謝,那就是要點:D – 2015-01-21 11:58:39