C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part145
http://mevius.5ch.net/test/read.cgi/tech/1568362404/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
探検
C++相談室 part146
レス数が1000を超えています。これ以上書き込みはできません。
2019/11/07(木) 11:35:36.76ID:4wggfTwe
968デフォルトの名無しさん
2019/12/17(火) 07:46:15.26ID:wpWnXFFo 闇言語
969デフォルトの名無しさん
2019/12/17(火) 11:20:07.09ID:dc1/89bE namespace Method{ namespace Detail {
template<typename ReturnType, typename ... ArgTypes> struct MethodRegister{};
} }
// 文字列で呼び出すための関数を登録するためのマクロ
#define METHOD_REGISTER_WITH_NAME( NAME, FUNC, RETURNTYPE, ... ) \
namespace Method { namespace Detail { \
template<> struct MethodRegister<RETURNTYPE, __VA_ARGS__> { \
using Functional = std::function<RETURNTYPE(__VA_ARGS__)>; \
MethodRegister() { \
MethodContainer::GetInstance().Register<RETURNTYPE, __VA_ARGS__>( #FUNC, Functional( static_cast<RETURNTYPE(*)( __VA_ARGS__ )>( FUNC ) ) ); \
} \
~MethodRegister() { \
MethodContainer::GetInstance().Unregister( #FUNC ); \
} \
}; \
static MethodRegister<RETURNTYPE, __VA_ARGS__> sMethodRegister##FUNC; \
} }
void HOGE(){
std::cout << "Hello World!" << std::endl;
}
void HOGE( std::string text ){
std::cout << text << std::endl;
}
METHOD_REGISTER_METHOD( HOGE, void );
METHOD_REGISTER_METHOD( HOGE, void, std::string );
こういった形で関数を登録する用のクラスを生成し、変数として生成して管理の自動化を行いたいのですが、
関数のオーバーロードを対応しようとした所、クラスの再定義や変数の再定義、管理クラスへの重複登録等
多数の問題が出て詰まってしまいました。
こういった問題を対処するにはどうすればよいのでしょうか?
template<typename ReturnType, typename ... ArgTypes> struct MethodRegister{};
} }
// 文字列で呼び出すための関数を登録するためのマクロ
#define METHOD_REGISTER_WITH_NAME( NAME, FUNC, RETURNTYPE, ... ) \
namespace Method { namespace Detail { \
template<> struct MethodRegister<RETURNTYPE, __VA_ARGS__> { \
using Functional = std::function<RETURNTYPE(__VA_ARGS__)>; \
MethodRegister() { \
MethodContainer::GetInstance().Register<RETURNTYPE, __VA_ARGS__>( #FUNC, Functional( static_cast<RETURNTYPE(*)( __VA_ARGS__ )>( FUNC ) ) ); \
} \
~MethodRegister() { \
MethodContainer::GetInstance().Unregister( #FUNC ); \
} \
}; \
static MethodRegister<RETURNTYPE, __VA_ARGS__> sMethodRegister##FUNC; \
} }
void HOGE(){
std::cout << "Hello World!" << std::endl;
}
void HOGE( std::string text ){
std::cout << text << std::endl;
}
METHOD_REGISTER_METHOD( HOGE, void );
METHOD_REGISTER_METHOD( HOGE, void, std::string );
こういった形で関数を登録する用のクラスを生成し、変数として生成して管理の自動化を行いたいのですが、
関数のオーバーロードを対応しようとした所、クラスの再定義や変数の再定義、管理クラスへの重複登録等
多数の問題が出て詰まってしまいました。
こういった問題を対処するにはどうすればよいのでしょうか?
970デフォルトの名無しさん
2019/12/17(火) 11:28:10.65ID:rApV4krM BOOST
971デフォルトの名無しさん
2019/12/17(火) 12:23:52.67ID:lfJGbKnI972デフォルトの名無しさん
2019/12/17(火) 18:42:08.59ID:iYSb7MEE このへんがいいんでないの。
https://srz-zumix.blogspot.com/2015/06/c-private.html
https://srz-zumix.blogspot.com/2015/06/c-private.html
974デフォルトの名無しさん
2019/12/17(火) 21:19:56.70ID:r3fDxRx7 プライベートメンバをテストしたくなったらそのロジックのみを非メンバ関数に切り出してテストしてるな。
まぁ、特に支障がなければ単純にpublicにするだけの時もあるけど。
まぁ、特に支障がなければ単純にpublicにするだけの時もあるけど。
975デフォルトの名無しさん
2019/12/17(火) 21:45:39.29ID:HvtzVY9o templateでアクセスすると合法的にプライベートメンバにアクセスできる
976デフォルトの名無しさん
2019/12/17(火) 21:49:21.80ID:iYSb7MEE そんな糞な方法でテストなんかしたくねー。
977デフォルトの名無しさん
2019/12/18(水) 01:14:03.75ID:zSYbFuJ0 テストなんかお綺麗にする必要が無い
978デフォルトの名無しさん
2019/12/18(水) 06:18:11.97ID:BbfJ/y// テストのテストが必要になるような意味のわからないテストコードはアウト
テストコードは実行せずに人が読んで理解できなければいけない
テストコードは実行せずに人が読んで理解できなければいけない
979デフォルトの名無しさん
2019/12/18(水) 07:25:56.60ID:ksLRDXXy >>978
どんな感じか見せていただけないでしょうか。
どんな感じか見せていただけないでしょうか。
980デフォルトの名無しさん
2019/12/18(水) 07:42:51.80ID:PEFQbiIG981デフォルトの名無しさん
2019/12/18(水) 07:48:17.80ID:uFDqtnkl >>979
例えばテストコードの中にループや条件分岐があるようなものはアウト
例えばテストコードの中にループや条件分岐があるようなものはアウト
982デフォルトの名無しさん
2019/12/18(水) 11:33:15.65ID:ksLRDXXy ループは許してもらえませんか?
データの並びとか検査したいんで。
条件分岐はたぶんないと思います。
データの並びとか検査したいんで。
条件分岐はたぶんないと思います。
983デフォルトの名無しさん
2019/12/18(水) 12:41:59.93ID:pXzQg2xI 原理主義にすぐ染まるやつw
ご苦労様
ご苦労様
984デフォルトの名無しさん
2019/12/18(水) 13:15:29.66ID:iEIErwam テスト用にいろんな複雑なテストも入れてるけど
まずいのか?
まずいのか?
985デフォルトの名無しさん
2019/12/18(水) 13:22:47.07ID:AjekT9H/ Debugビルドしたら遅すぎて検証できなくて詰んだ
986デフォルトの名無しさん
2019/12/18(水) 13:34:17.71ID:YQOjezK4 典型的な糞テストは、テスト対象の出力がハッシュや現在時刻などのような予測しづらいものに依存している場合に、
テストコードにテスト対象自体のロジックと似たものを書いてしまっているケースだな
原則的には、期待する出力は全てハードコードするのが正しい
難しいなら一度試しにテスト対象を実行して目視テストし、その結果をハードコードしたほうがマシ
テストコードにテスト対象自体のロジックと似たものを書いてしまっているケースだな
原則的には、期待する出力は全てハードコードするのが正しい
難しいなら一度試しにテスト対象を実行して目視テストし、その結果をハードコードしたほうがマシ
987デフォルトの名無しさん
2019/12/18(水) 13:39:53.25ID:iEIErwam メカが絡むリアルタイム処理でそんな事出来るかよ
988デフォルトの名無しさん
2019/12/18(水) 15:13:38.33ID:uFDqtnkl >>982
Parameterized Testsがあれば十分じゃね?
Parameterized Testsがあれば十分じゃね?
989デフォルトの名無しさん
2019/12/18(水) 15:16:04.78ID:uFDqtnkl990デフォルトの名無しさん
2019/12/18(水) 15:38:06.38ID:AmwvkO78 次スレは
991デフォルトの名無しさん
2019/12/18(水) 16:59:26.54ID:ksLRDXXy よ。
992デフォルトの名無しさん
2019/12/18(水) 17:57:22.30ID:uFDqtnkl993デフォルトの名無しさん
2019/12/18(水) 20:28:47.90ID:CdPazUY7994デフォルトの名無しさん
2019/12/18(水) 21:11:16.67ID:LM1drZI+ クラスとかの勉強入る前にC言語でしっかり文字列処理出来るようになったほうがいい?
995蟻人間 ◆T6xkBnTXz7B0
2019/12/18(水) 21:14:21.02ID:Zo1XP656 >>995
strcpyなんて古い関数は21世紀では使えないぜ。std::stringでOK.
strcpyなんて古い関数は21世紀では使えないぜ。std::stringでOK.
996デフォルトの名無しさん
2019/12/18(水) 21:14:35.04ID:uFDqtnkl C言語でしっかり文字列処理出来るようになったほうがいい? → いい
C++でC言語の文字列処理する? → しない
C++でC言語の文字列処理する? → しない
997デフォルトの名無しさん
2019/12/18(水) 21:16:04.08ID:aoz4SWmd >>987
逆にそういう不確定な部分とロジック部分を切り分けるのが単体テストの目的でもある。
逆にそういう不確定な部分とロジック部分を切り分けるのが単体テストの目的でもある。
998デフォルトの名無しさん
2019/12/18(水) 23:15:57.41ID:cF9WM4jz999デフォルトの名無しさん
2019/12/19(木) 00:00:58.14ID:zX6m0cqE 単体テストはどんだけ単純でわかりやすいコードでテストパターンを網羅するかが肝
Google TestとかTest::MoreとかJUnit使ったらワカル
Google TestとかTest::MoreとかJUnit使ったらワカル
1000蟻人間 ◆T6xkBnTXz7B0
2019/12/19(木) 00:08:57.93ID:r6T/W91o あれっ?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 41日 12時間 33分 22秒
新しいスレッドを立ててください。
life time: 41日 12時間 33分 22秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 高市が早くあの発言を撤回しないと、中国からもっと大きな制裁が飛んでくるぞ [805596214]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【画像】髙市さん「無職のシンママ支援を手厚くするため、世帯年収900万円以上の控除をカットします🙂」 [881878332]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
