実現したいこと
①関数testの引数として、
②関数f1又は関数f2を受け取り、
③実行したい
試したこと
・質問タイトルの内容で検索してヒットしたサイトの説明を読んで、
自分なりに試してみたのですが関数の実行の仕方が分かりませんでした。
【C++】関数を引数に渡す色々な方法【STL テンプレート 関数ポインタ】
・引数として受け取れているような気がするのですが関数の実行が出来ません。
・warningが出ているのですが検索してもよく分かりませんでした。
warning
1/qa2.cpp: In instantiation of ‘int test(T) [with T = int (*)()]’: 2/QA/qa2.cpp:23:12: required from here 3/QA/qa2.cpp:16:5: warning: statement has no effect [-Wunused-value] 4 16 | fn; //実際の処理をする関数 5 | ^~ 6 * ターミナルはタスクで再利用されます、閉じるには任意のキーを押してください。
コード
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4int f1() { 5 cout << "f1" << '\n'; 6 return 0; 7} 8int f2() { 9 cout << "f2" << '\n'; 10 return 0; 11} 12 13template <typename T> int test(T fn) { 14 cout << "test:start" << '\n'; //計測開始 15 16 fn; //実際の処理をする関数 17 18 cout << "test:end" << '\n'; //計測終了 19 return 0; 20} 21 22int main() { 23 test(f1); 24 test(f2); 25}
out
1//現状の出力 2test:start 3test:end 4test:start 5test:end
out
1//期待する出力 2test:start 3f1 4test:end 5test:start 6f2 7test:end
補足情報(FW/ツールのバージョンなど)
Ubuntu 20.04 LTS
WSL2
VSCode 1.73.1
Windows10 22H2 19045.2251
C++17
g++ 9.4.0
gdb
回答1件
あなたの回答
tips
プレビュー