質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2161閲覧

std::listでクラスが使えない

daiki002

総合スコア68

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/04/11 10:39

こちらは問題なく動きます

c++

1#include <iostream> 2#include <list> 3#include <algorithm> 4 5int main() 6{ 7 auto numbers = std::list<int>(); 8 numbers.push_back(1); 9 numbers.push_back(2); 10 numbers.push_back(3); 11 12 std::for_each(numbers.cbegin(), numbers.cend(), [](int x) 13 { 14 std::cout << x << std::endl; 15 }); 16}

こちらがエラーが出ます。
どのようにすればstd::listでクラスが使えますでしょうか?

エラー C2664 'void std::list<Human,std::allocator<_Ty>>::push_back(const _Ty &)': 引数 1 を 'Human *' から 'Human &&' へ変換できません。

c++

1#include <iostream> 2#include <list> 3#include <algorithm> 4 5class Human 6{ 7public: 8 std::string Name; 9 int Age; 10 11 Human(std::string name, int age) 12 { 13 this->Name = name; 14 this->Age = age; 15 } 16}; 17 18int main() 19{ 20 auto humans = std::list<Human>(); 21 humans.push_back(new Human("name001", 10)); 22 23 std::for_each(humans.cbegin(), humans.cend(), [](Human x) 24 { 25 std::cout << x.Name.c_str() << x.Age << std::endl; 26 }); 27}

補足情報(FW/ツールのバージョンなど)

  • Visual Studio Community 2017
  • Windows SDK Version: 10.0.16299.0
  • Platform Toolset: Visual Studio 2017 (v141)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

newして得られるのはポインタなので、単にHuman(...)を放り込めばエラーは解消します。
emplace_backを用いると更に効率化を図れるでしょう。

投稿2018/04/11 10:47

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki002

2018/04/11 11:16

できました。ありがとうございました。 emplace_backも知りませんでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問