C++11: 'make_shared' 不是 'std' 的成员
C++11: 'make_shared' is not a member of 'std'
我正在尝试更新我的一些代码,并试图包括 make_shared
。
我创建了一个名为 Mail 的 class 来发送电子邮件,现在我尝试包含它:
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
我哪里错了?
make_shared
需要你 #include <memory>
.
我不知道你为什么要为此查看 Makefile...?:-)
我正在尝试更新我的一些代码,并试图包括 make_shared
。
我创建了一个名为 Mail 的 class 来发送电子邮件,现在我尝试包含它:
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
我哪里错了?
make_shared
需要你 #include <memory>
.
我不知道你为什么要为此查看 Makefile...?:-)