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

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

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

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

Q&A

解決済

1回答

683閲覧

c++の(構造体に似た)コードの意味について

trafalbad

総合スコア303

C++

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

0グッド

0クリップ

投稿2020/09/23 13:18

c++初心者です。

以下のc++の構造体に似たコードがあります。

このgithubのdemo_yolov3_tiny.cppの156行目です

このコードの意味を理解したいんですが、意味がよく理解できません。

c++

1#include <xilinx/ai/dpu_task.hpp> 2#include <xilinx/ai/nnpp/yolov3.hpp> 3auto task = [] { 4 std::lock_guard<std::mutex> lock(mtx_); // Important! 5 return xilinx::ai::DpuTask::create(KERNEL_NAME); 6 }();

構造体の形をしてるのに、なぜtaskの後にリストのようなカッコがあるのでしょうか?

この構造体の使い方は、宣言したあと、returnで返される値がtaskに格納されており、APIのメンバ変数にアロー演算子でアクセスしていくという使い方をしていると思います。(returnで呼び出してるのはDPUというカーネルです)

・returnで呼び出されるdpu API
dpu_task.hpp

taskの使い方

c++

1task->setMeanScaleBGR({0.0f, 0.0f, 0.0f}, {0.00390625f, 0.00390625f, 0.00390625f}); 2 3auto input_tensor = task->getInputTensor(0); 4 5task->setImageRGB(image);

この部分について質問なのですが、

質問
Q1. これは構造体なんでしょうか?だとしたらなぜtaskの、あとにリストのカッコがついてるんでしょうか?

Q2. returnで返ってくる処理は、この構造体らしきものが宣言または、メンバ変数にアクセスするという形で実行された時に、呼び出されるというので間違ってませんか?または、returnが呼び出されるのは、宣言か実行のどちらのときでしょうか?

教えて下さい、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Q1. これは構造体なんでしょうか?

これは構造体ではありません。ラムダ式です。

Q2. returnで返ってくる処理は、この構造体らしきものが宣言または、メンバ変数にアクセスするという形で実行された時に、呼び出されるというので間違ってませんか?または、returnが呼び出されるのは、宣言か実行のどちらのときでしょうか?

この場合、ラムダ式を作成した直後に()で呼び出していますので、returnはその場で実行されます。

投稿2020/09/23 13:21

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問