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

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

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

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

Q&A

解決済

2回答

870閲覧

newおよびautoの用法について

abeno2365

総合スコア25

C++

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

0グッド

0クリップ

投稿2020/04/01 10:31

public:
template <typename U>
void push(U &&value)
{
auto n = new Node(std::forward<U>(value), top);
top = n;
++stackSize;
}

struct Node
{
Node(T &&v, Node *n): value(std::move(v)), next(n)
{
}

Node(const T &v, Node *n): value(v), next(n) { } T value; Node *next; }; Node *top; size_t stackSize;

classの一部を抜粋したものです。
auto n = new Node(std::forward<U>(value), top);
の部分は 
auto n = new Node(std::forward<U>(value), top);
としなくで大丈夫なんでしょうか。
このままだとnの型はNode
ではなく、Nodeと推測されないでしょうか。

回答よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

new Node() の型は Node* なので、Node と推測されることはありません

投稿2020/04/01 11:12

yuki23

総合スコア1448

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

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

abeno2365

2020/04/01 17:58

回答ありがとうございます。 以下の例で、auto&やauto*としているのはなぜなのでしょうか、autoだけで int&やint*を推測できないのでしょうか。 auto i = 10; auto& cri = i; auto* cpi = &i;
yuki23

2020/04/02 01:35

その例では auto* の * は不要です。 i だけでは int なのか int& なのかは推測できないので、& は必要です。 常識的に考えて、下のどちらにしたいのかは自然に推測できませんよね? (1) int cri = i; (2) int& cri = i;
abeno2365

2020/04/04 06:51

なるほど、理解できました。 回答ありがとうございました。
guest

0

new Nodeの型はNode*型であり、Node型ではありませんので、Node型に推測されません。

投稿2020/04/03 22:51

編集2020/04/03 22:52
fuji_0055

総合スコア163

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

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

thkana

2020/04/04 05:50

三日も前の回答と同内容の回答をする意図はなんでしょう? (数分差なら、たまたま被ったのが入力中で気が付かなったんだろうと思うけれど)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問