C++ 11:'make_shared'不是'std'的成员

Mic*_*der 1 makefile compilation make-shared c++11

我正在尝试更新我的一些代码,并尝试包含make_shared.

我创建了一个名为Mail的类来发送电子邮件,现在我试图包含它:

    auto m =  std::make_shared<Mail>();
Run Code Online (Sandbox Code Playgroud)

问题是我正在使用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
Run Code Online (Sandbox Code Playgroud)

编译器还包含此标志:

g++ -o mail.o -std=c++0x -O3 mail.cpp
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

我错在哪里了?

Dev*_*lar 6

make_shared需要你#include <memory>.

我不知道你为什么要看你的Makefile ......?:-)

  • 天哪,这有点尴尬:X 谢谢,这就是重点:D (2认同)