[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 03:13 / Filesize : 247 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part146



1 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 11:35:36.76 ID:4wggfTwe.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part145
mevius.5ch.net/test/read.cgi/tech/1568362404/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

985 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 03:30:02 ID:nsTCJN+n.net]
#define private public

986 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 03:58:13.47 ID:KUtZUPl9.net]
#if 0
friend test;
#endif

987 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:08:07.08 ID:KzMqUd+t.net]
#ifndef NDEBUG
friend struct test;
#endif

988 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 07:46:15.26 ID:wpWnXFFo.net]
闇言語

989 名前:デフォルトの名無しさん [2019/12/17(火) 11:20:07.09 ID:dc1/89bE.net]
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 );

こういった形で関数を登録する用のクラスを生成し、変数として生成して管理の自動化を行いたいのですが、
関数のオーバーロードを対応しようとした所、クラスの再定義や変数の再定義、管理クラスへの重複登録等
多数の問題が出て詰まってしまいました。
こういった問題を対処するにはどうすればよいのでしょうか?

990 名前:デフォルトの名無しさん [2019/12/17(火) 11:28:10.65 ID:rApV4krM.net]
BOOST

991 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 12:23:52.67 ID:lfJGbKnI.net]
>>966
>>967
リリース時に消す必要あんの?

992 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 18:42:08.59 ID:iYSb7MEE.net]
このへんがいいんでないの。
https://srz-zumix.blogspot.com/2015/06/c-private.html

993 名前: mailto:sage [2019/12/17(火) 19:10:07.01 ID:780pCLgH.net]
>>963
まあ、
({int r; while((r = index(n)) == 0) n--; r;})
の最後の
r;
というのが限りなく非文法的ですし



994 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:19:56.70 ID:r3fDxRx7.net]
プライベートメンバをテストしたくなったらそのロジックのみを非メンバ関数に切り出してテストしてるな。
まぁ、特に支障がなければ単純にpublicにするだけの時もあるけど。

995 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:45:39.29 ID:HvtzVY9o.net]
templateでアクセスすると合法的にプライベートメンバにアクセスできる

996 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:49:21.80 ID:iYSb7MEE.net]
そんな糞な方法でテストなんかしたくねー。

997 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 01:14:03 ID:zSYbFuJ0.net]
テストなんかお綺麗にする必要が無い

998 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 06:18:11.97 ID:BbfJ/y//.net]
テストのテストが必要になるような意味のわからないテストコードはアウト
テストコードは実行せずに人が読んで理解できなければいけない

999 名前:デフォルトの名無しさん [2019/12/18(水) 07:25:56.60 ID:ksLRDXXy.net]
>>978
どんな感じか見せていただけないでしょうか。

1000 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:42:51.80 ID:PEFQbiIG.net]
>>971
絶対必要でもないが
少なくともデバッグ用であることくらい
アピールしたい
//よりNDEBUGという特定ワードを使う点にも拘りがある

1001 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:48:17.80 ID:uFDqtnkl.net]
>>979
例えばテストコードの中にループや条件分岐があるようなものはアウト

1002 名前:デフォルトの名無しさん [2019/12/18(水) 11:33:15.65 ID:ksLRDXXy.net]
ループは許してもらえませんか?
データの並びとか検査したいんで。
条件分岐はたぶんないと思います。

1003 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 12:41:59.93 ID:pXzQg2xI.net]
原理主義にすぐ染まるやつw
ご苦労様



1004 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:15:29.66 ID:iEIErwam.net]
テスト用にいろんな複雑なテストも入れてるけど
まずいのか?

1005 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:22:47.07 ID:AjekT9H/.net]
Debugビルドしたら遅すぎて検証できなくて詰んだ

1006 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:34:17.71 ID:YQOjezK4.net]
典型的な糞テストは、テスト対象の出力がハッシュや現在時刻などのような予測しづらいものに依存している場合に、
テストコードにテスト対象自体のロジックと似たものを書いてしまっているケースだな
原則的には、期待する出力は全てハードコードするのが正しい
難しいなら一度試しにテスト対象を実行して目視テストし、その結果をハードコードしたほうがマシ

1007 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:39:53.25 ID:iEIErwam.net]
メカが絡むリアルタイム処理でそんな事出来るかよ

1008 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 15:13:38.33 ID:uFDqtnkl.net]
>>982
Parameterized Testsがあれば十分じゃね?

1009 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 15:16:04.78 ID:uFDqtnkl.net]
>>986
期待する出力をハードコードするから
テストで「○○以上であること」って書くこと無いよね?
こういうテストケースある?言い換えるとそういうマッチャーって必要?

1010 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 15:38:06.38 ID:AmwvkO78.net]
次スレは

1011 名前:デフォルトの名無しさん [2019/12/18(水) 16:59:26.54 ID:ksLRDXXy.net]
よ。

1012 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:57:22.30 ID:uFDqtnkl.net]
ほらよ

C++相談室 part147
https://mevius.5ch.net/test/read.cgi/tech/1576659413/

1013 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 20:28:47.90 ID:CdPazUY7.net]
>>987
それはまた別の話
ここで言ってるのは単体テストレベルの話だぞ



1014 名前:デフォルトの名無しさん [2019/12/18(水) 21:11:16.67 ID:LM1drZI+.net]
クラスとかの勉強入る前にC言語でしっかり文字列処理出来るようになったほうがいい?

1015 名前:蟻人間 mailto:sage [2019/12/18(水) 21:14:21.02 ID:Zo1XP656.net]
>>995
strcpyなんて古い関数は21世紀では使えないぜ。std::stringでOK.

1016 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 21:14:35.04 ID:uFDqtnkl.net]
C言語でしっかり文字列処理出来るようになったほうがいい? → いい
C++でC言語の文字列処理する? → しない

1017 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 21:16:04.08 ID:aoz4SWmd.net]
>>987
逆にそういう不確定な部分とロジック部分を切り分けるのが単体テストの目的でもある。

1018 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 23:15:57.41 ID:cF9WM4jz.net]
>>992

お前らコピー使うなムーブしろ

1019 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 00:00:58.14 ID:zX6m0cqE.net]
単体テストはどんだけ単純でわかりやすいコードでテストパターンを網羅するかが肝
Google TestとかTest::MoreとかJUnit使ったらワカル

1020 名前:蟻人間 mailto:sage [2019/12/19(木) 00:08:57.93 ID:r6T/W91o.net]
あれっ?

1021 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 41日 12時間 33分 22秒

1022 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef