1

コードの一部を更新しようとしていて、 を含めようとしましたmake_shared

メールを送信するために 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

ここで何が間違っていましたか?

4

1 に答える 1

8

make_sharedする必要があります#include <memory>

なぜあなたが Makefile を見ているのかわかりません... ?:-)

于 2015-01-21T11:55:57.617 に答える