2015-01-21 7 views
-2

일부 코드를 업데이트하려고 시도 중이고 make_shared을 포함하려고했습니다. C++ 11 : 'make_shared'가 'std'의 구성원이 아닙니다.

내가 이메일을 보내 메일라는 클래스를 만들어, 지금은 그것을 포함하려고 :

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

문제는 내가 메이크 사용하고 있다는 것입니다 :

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) #include '을 했습니까? –

답변

4

make_shared#include <memory>이 필요합니다.

이유가 무엇인지 모르겠습니까? ...---)

+0

오, 세상에, 좀 어색해. X 고마워, 그게 핵심이었다. D –