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


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

C++相談室 part126



1 名前:デフォルトの名無しさん mailto:sage [2016/08/13(土) 11:24:45.65 ID:NPYsKJkE.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part125
echo.2ch.net/test/read.cgi/tech/1463761261/

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

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

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

755 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 00:47:09.50 ID:hz43BbCS.net]
C言語的なインターフェイスは不便だからC++らしく書きましょう

756 名前:デフォルトの名無しさん [2016/09/12(月) 00:47:23.61 ID:U6Ajls88.net]
>>743
格納サイズを把握してたらmax_bufferなんて要らなくね?

757 名前:デフォルトの名無しさん [2016/09/12(月) 00:51:26.47 ID:GwVwE6OL.net]
>>745
いやオーバーフロー対策の最大値だから
引数で明示的にサイズを渡しましょうって取り決めだ

758 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:02:10.22 ID:Tu0jZEI4.net]
>>743の達した結論が
>>674とほぼ同じに思えてならない

759 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:10:30.26 ID:hz43BbCS.net]
いまさらそんな40年前からある常識を言われも困る

760 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 01:13:36.21 ID:WIrRwO5G.net]
>>730
>728 で挙げた MSDN のページにそんな規定は見当たらないんだけど、どこ見て言ってるの?
MAX_PATH の類のことを言ってるなら、よくある勘違いだろうと思うんだ。
https://www.google.com/search?q=GetModuleFileName+MAX_PATH
d.hatena.ne.jp/satosystems/20100807/1281152224

761 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 06:52:52.36 ID:y21Asc3i.net]
MAXPATH があてにならんのは確かだが
サイズ取得せずにリトライするのもダメ臭が

762 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 08:08:53.69 ID:46mLPt5D.net]
書き込んだサイズを返すくせに必要なサイズを
調べる機能が規格に無いstd::mbstowcsはクソ

763 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 09:10:27.05 ID:HZgwCDH3.net]
プログラミングのコードを書く時のタブvsスペース戦争がついに決着
www.gizmodo.jp/2016/09/tab-vs-space.html
www.gizmodo.jp/images/2016/09/160901coding2.jpg
www.gizmodo.jp/images/2016/09/160901coding3.jpg



764 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 09:38:06.48 ID:y21Asc3i.net]
優れたデータから生まれるクソ同然な解説

765 名前:デフォルトの名無しさん [2016/09/12(月) 10:27:38.72 ID:CKtP/5ek.net]
おまえTAB派かw

766 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 11:33:25.20 ID:+YsVO5lS.net]
タブスペース混在で起きる問題とは?

767 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 12:31:33.38 ID:ZblQazo2.net]
タブ幅が決まってないのが一番の問題だな。2,3,4,8みんなバラバラ。

768 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 13:20:51.17 ID:s5J5+4ba.net]
pythonが致命傷を負う

769 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 13:57:05.61 ID:x7GAwvaf.net]
>outputにヌルいれると必要なサイズ返るとかが普通じゃね

必ずしもそれが有効かどうかわからないから困る
必要なバッファサイズを取得してから実際に文字列を取得するまで
関数を二回呼び出す必要があり

770 名前:Aここに時間差があるのが問題
マルチスレッドで問題になる
取得したバッファサイズは既に古い情報になっている可能性がある
これを解決するにはLockするしかない
obj->lock();
size_t buffer_size = obj->func( nullptr, 0 );
std::vector<char> output( buffer_size );
obj->func( outputr.data(), output.size() );
obj->unlock();
こんなコードはまさに糞であるということ
しかも、lock、unlockをし忘れても、たまたまのタイミングの物で、そこそこ動きそうというのが怖い
つまり、ほんの短い期間の間に、文字列が更新されて取得したバッファサイズが無効になるほうが珍しいだろう
しかし、ありえないことではない
1000回に1回だけ失敗するというのが一番怖い

これに比べれば、関数内でnew char[]して返すほうが、まだいくらかマシに思えるぐらい
しかしこれをやると、帰ってきた文字列は自分で開放しなければならないのか
あるいは開放してはダメなのか、解放関数はdelete[]なのかfreeなのかあるいは別の専用関数なのか
ということが関数ごとにマチマチになり、非常に煩雑になる

std::string output = obj->func();
のほうが断然良い、誰の目にも明らか、短い、シンプル
lock、unlockを呼び出し元が保証しなければならないのは良くない
必要な処理が一発の関数呼び出しでキマるように設計すれば、同期処理はobj内に隠蔽できる
こちらのほうが良い
単に文字列取得するだけでlock、unlockが必要というのは狂気の沙汰
>>700のような特殊な場合を除いては、ね
[]
[ここ壊れてます]

771 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 15:42:12.58 ID:tjH2oYJX.net]
ってか

void func( char *output, int max_buffer)

なんてI/Fを書いちゃってることが問題なんじゃねーの?
これでなんとかしようって考えたって生産性ないし

772 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 16:16:50.47 ID:ZblQazo2.net]
cのIFだから古臭いのはしょうがない。

効率悪くなってもstd::string吐くようにラップして二度と触らないのが吉。

773 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 16:45:03.11 ID:+C5a7cGR.net]
void func( char *output, int max_buffer)
これ、ニワカが作ったダメな見本

普通
size_t func( char *output, size_t max_buffer)



774 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 17:01:45.51 ID:2Vwoh4uN.net]
ゴミが得意気に難癖つけてて笑える

775 名前:デフォルトの名無しさん [2016/09/12(月) 17:58:57.32 ID:KCLSxXC3.net]
同じ意味じゃんw

776 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:06:15.51 ID:5/ctHFsj.net]
マルチスレッドのリテラシーも無いのにクソみたいな長文をドヤ顔で貼り付ける>>758が哀れで仕方ない
2回のfnucの呼び出しの間にバッファーが変更される状況では単独の呼び出しすら破綻していることが理解できないらしい

777 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:13:03.76 ID:Brz5tLm8.net]
彼に限らず何らかの問題意識を訴える子が
なぜか突然マルチスレッドを絡めてくるのはもはや伝統芸
そして一通り話を聞いてみると
「そうだね、排他だね」としか言いようがないことも毎度

778 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:27:11.87 ID:x7GAwvaf.net]
std::string output = obj->func();
の場合、funcの中で排他処理をしていれば、呼び出し元は排他処理について気にしなくてよい
アトミックな操作ということになる
文字列の取得にかかわらず、アトミックが期待される処理は
分解せずに一つの関数で実現すべきである
personオブジェクトの取得なら、person = obj->get_person(); とすべきであり
person.set_name( obj->get_persion_name() );
person.set_age( obj->get_persion_age() );
のように分解してしまうとアトミックでなくなるから、やはりロックが必要になる
外からオブジェクトをロックする、そういうI/Fをobjに用意するということは
何時でも何処でも好き勝手にロックできるというわけで
使い方を誤るとデッドロックを引き起こす可能性がある
ロックの順番はクラス設計者が明確に管理し、隠蔽すべき

さて、文字列取得を二つの関数に分けて行うとアトミックな操作でなくなるから
呼び出し元で排他処理をしなければならなくなる
obj->lock();
size_t buffer_size = obj->func( nullptr, 0 );
std::vector<char> output( buffer_size );
obj->func( output.data(), output.size() );
obj->unlock();
これは非常に面倒なので君らは直ぐにでもstd::stringを返すラッパーを書く
そうすれば結局同じことになるので、初めからstd::stringを返せばよい
もとより文字列の取得はアトミックであることが期待されるわけだから
一回の関数呼び出しで行うのが筋である

779 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:43:38.31 ID:5/ctHFsj.net]
一生懸命考えた結果がコレか?
呼び出し側が自らコンカレントな使い方する前提でロック必須と言われてもねぇ
その内vectorのremove&eraseイディオムにも排他が必要で狂気の沙汰とか言い出しそうだな

780 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:44:31.77 ID:x7GAwvaf.net]
どれだけの処理を一つの関数で行うべきかは
どこまでの処理がアトミックと期待されるか、による
文字列の取得はアトミックであることが期待されるので
一つの関数でアトミックに実行すべき、となる
場合によればアトミックの範囲がもっと広がることもある
例えばpersonの情報が欲しいとき、名前と年齢を別々に取得するのはよくない
名前の取得と年齢の取得のそれぞれが独立して排他処理してあって正しく動いたとしても
全体として名前と年齢のペアが一致しなくなる可能性があるから
だからこの場合、personの情報は一つの関数呼び出しで行い、アトミックである必要がある

なので、一つの関数で実行すべきこと、アトミックに実行すべきこと、は
文字列の取得なんかよりは大きな範囲、粒度になることはある
大きくなることはあり得るということ

が、間違っても、文字列の取得などというプリミティブな処理を
バッファサイズの取得と文字の取得の二つに分割したほうが良い
とはならない

781 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 18:50:01.82 ID:x7GAwvaf.net]
>>767

>必ずしもそれが有効かどうかわからないから困る

と書いた通り、すべての場合とは言っていない
困る場合があるといっている
そして、困る場合での話である

782 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 19:40:26.75 ID:5/ctHFsj.net]
なるほどつまりは>>765だな
この論法は非constメンバー関数を使ったイディオムに広く使えそうだ

「〜って普通だろ?」
 ↓
「必ずしもそれが有効かどうかわからないから困る(長文略)」

783 名前:デフォルトの名無しさん [2016/09/12(月) 21:04:54.81 ID:U6Ajls88.net]
>>767
呼び出し側だけとは限らんでしょ。
非同期でデータメンバーを更新しつつ、更新通知をだすクラスとか



784 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 22:29:31.42 ID:2Vwoh4uN.net]
一発でstringやらvectorで返すなら常識的に言ってロックは必要ないわな
何話してるのか分かってない奴が力んでるな

785 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 23:29:00.60 ID:3LkOVCr7.net]
タブ幅は8である。但し、一度タブキーを叩くと4つのスペースが入る
但しそれで8つのスペースとなるときはそれを一つのタブに換える

786 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 00:03:18.93 ID:ZWXE0Cz9.net]
いやタブとスペース混ぜるのは論外でしょ

787 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 00:39:27.54 ID:UjtLBJZw.net]
混ぜると誰かがコード整形したときに全部差分に出るから邪魔

788 名前:デフォルトの名無しさん [2016/09/13(火) 00:51:46.06 ID:nTkG/AQ9.net]
>>772
そんな事でロックが必要かどうか決まらないと思うが何を言ってるんだ?

789 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 01:06:54.89 ID:TGJSQl0M.net]
VZエディターとか混ぜてたな

790 名前:デフォルトの名無しさん [2016/09/13(火) 01:20:10.44 ID:7Uxx8QPD.net]
基本的にインデントが何段階も必要な入れ子はよくない
許容範囲は2つまでだな

791 名前:デフォルトの名無しさん [2016/09/13(火) 02:29:06.46 ID:qRIDBJHy.net]
論点がずれてんじゃんw

792 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 04:10:18.62 ID:ifCWTkZq.net]
>>775
差分取るときホワイトスペース無視すればいいだろ

793 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 05:08:48.43 ID:E9px3zRx.net]
std::get_temporary_buffer ってなんであんなクソ仕様で作ったの



794 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 05:14:57.49 ID:ifCWTkZq.net]
それ知らんかったけどクソだからC++17でdeprecatedになるのか

795 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:08:31.21 ID:fa0Yw14i.net]
引数の異なる関数を関数テーブルにまとめる方法ヘルプミー

796 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:11:36.75 ID:jvr3tDVu.net]
型が違うから難しくね?同名でオーバーロードするんじゃだめなんかい。

797 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:21:28.20 ID:6YUjJJm0.net]
テーブルの別の要素で引数と返り値の型を記憶しておき、任意の関数ポインタ型にreinterpretして保存
呼び出し時は記憶した引数と返り値のの型に対応する関数ポインタ型にreinterpretしてから呼び出す。

798 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 07:56:45.02 ID:BC6G6r/f.net]
>>783
それどうやって使うつもりなの?

799 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:09:28.64 ID:LgTr6ZxA.net]
>>785
やはり別物で統一して記憶させるしかないか…
要は入れてから後にキャストだよね

>>786
関数群30ぐらいあるからそれを管理しやすくしたい
別にenumで関数名入れておくのと
関数名に対応したインデックス拾ってくる関数を用意しておいて
後に使いやすく

800 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:11:50.46 ID:jvr3tDVu.net]
酷い設計って言っていい?

801 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:20:36.44 ID:BC6G6r/f.net]
>>787
> 後に使いやすく

ごめん、全然使いやすくなるイメージがないんだが...
単にまとめときたいだけならクラス作って静的メンバ関数でいいような気がするし

802 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:29:56.17 ID:LgTr6ZxA.net]
>>789
関数名を別ファイルから取り出して動的に動かすためにはこれしかなかった
まとめておいてプログラム内で処理ならそれで良いけど
今のところそうなってるからそれに会わせるしかないんだ

803 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:32:38.69 ID:jvr3tDVu.net]
可変長引数取る関数内でスイッチするのと大差なさそう。



804 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:33:59.57 ID:Dh1MHapU.net]
>>791
はぁ??

805 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:39:26.37 ID:LgTr6ZxA.net]
>>791
結局どこかで分岐処理によるキャストするからほぼ変わらん気もする
これに関連する話だけど

int (*func)(void*)みたいな関数ポインタがあって
引数二つにするにはどうやってキャストしたら良いんだろうか

806 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:43:25.81 ID:kwiFGb/T.net]
まず関数の型をtypedefしようぜ。

807 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:47:38.13 ID:GD/RUd4Y.net]
windows のマクロまみれのメッセージディスパッチと同じようなことじゃろ

808 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 08:57:44.86 ID:jvr3tDVu.net]
ideone.com/BWJoEi
こういう感じのこと思いついたけど、できんかった。テヘペロ。
関数複製するんだから通ってほしいなぁ。
なんかテンプレマジックで通らんかなぁ。

809 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 09:02:38.95 ID:jvr3tDVu.net]
これができたら、ファクトリーメソッドがパラダイス。

810 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 09:51:20.93 ID:jvr3tDVu.net]
特定の型のパラメータパックってできなかったっけ?
Anyのパラメータパック食わせれば解決するんだけどなぁ・・・。

811 名前:デフォルトの名無しさん [2016/09/13(火) 11:14:43.16 ID:nTkG/AQ9.net]
やりたいことにたいして少し大仰だが、Boost.Pythonのようなものでインタプリタからどうやって型安全に関数を実行してるか見たら少しは参考になるんじゃない?

812 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 12:49:03.21 ID:BC6G6r/f.net]
>>790
> 関数名を別ファイルから取り出して動的に動かす
なら初めからそう書いてよ
使いやすさ云々じゃないじゃん
関数名を特定するのはいいけど引数は関数毎にバラバラなんでしょ?
結局どこかで分岐が必要な気がする
それとも引数は Variant みたいななんでも入れられる変数の配列にしてしまうとか

813 名前:デフォルトの名無しさん [2016/09/13(火) 17:00:07.27 ID:dUelqKgA.net]
>>783
#include <functional>

double foo(double x) { return x; }
int bar(int x) { return x; }

int main()
{
std::function<double(double)> table[2];
table[0] = foo;
table[1] = bar;
}



814 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 18:18:50.00 ID:LmZnag12.net]
>>801
コードサンクス
ただこれはintとdouble型に対してだからできるんじゃないのだろうか

>>800
そういうことだね
だからどこかでキャストし直す必要がある…はず
あらかじめどこかにパターンを定義しておいてそれはもうスイッチ文に頼るしかないかなって考えてる

815 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 18:20:35.88 ID:LmZnag12.net]
>>797
俺もパラダイスを目指している
Cならエラー出ずにできるみたいなんだよね
C++でxmlをjsonにパースしたり
jsonを簡単に読み込む方法ってあったっけ?
ないならC#も考えないとな…

816 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 19:01:39.86 ID:bDDPvjQm.net]
実行時に文字列を比較して分岐することのどこにパラダイスを見いだせるんだよ

817 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 20:22:41.37 ID:BC6G6r/f.net]
>>803
調べてないけどライブラリぐらいあるんじゃね?

818 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 21:57:21.43 ID:7T7m5n2i.net]
質問です。

placement newの関数の宣言と定義はどこに書くのが正解ですか? よろしくお願いします。

819 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 22:04:54.99 ID:6F1+hrdF.net]
>>805
picojsonとやらを使ってみた
便利なんだけど配列二つあると積む現象が起きてしまった…

820 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 22:23:58.73 ID:eOd6ZBDo.net]
jscriptで読めるから
WSHでアプリで実行

821 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 22:34:06.63 ID:7T7m5n2i.net]
ReactOSというOSの開発をしています。
ヘッダー<new>と<crtdbg.h>のnewの宣言が衝突していて、<new>が使えません。
どうしたら正しく配置newが使えますか?

822 名前:デフォルトの名無しさん [2016/09/13(火) 22:52:09.89 ID:7Uxx8QPD.net]
自分のソフトの販売権がカシオが取得とかねつ造してたやつだ

823 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/13(火) 22:59:05.82 ID:7T7m5n2i.net]
わかりました。ReactOSのSTLかCRTのコードが間違っているということですね。
配置newは<new>をインクルードしたら使えなければおかしい。



824 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:06:52.68 ID:7T7m5n2i.net]
自分の商品の販売権をどう決めようが勝手でしょう。会社名を出したのは悪かったが。

825 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:08:15.35 ID:jz2gr8q/.net]
ライバル会社かなにか?

826 名前:デフォルトの名無しさん [2016/09/13(火) 23:15:36.33 ID:7Uxx8QPD.net]
>>812
おまえカシオが権利を所有とか書いてたんだろ
カシオと専売契約交わしたみたいに書いてたろ

カシオが知らんと思うてか 

827 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:21:08.73 ID:7T7m5n2i.net]
>>814
誤解です。メールで交渉中でした。

828 名前:デフォルトの名無しさん [2016/09/13(火) 23:29:04.40 ID:7Uxx8QPD.net]
>>815
うそつけこら。おまえがメール送ってただけやろが。
往生際が悪い。全部バレとんねん 

狭い業界でごまかせるとおもうなよ

829 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 23:33:01.44 ID:7T7m5n2i.net]
すみません

830 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 00:03:18.61 ID:3NkcLiKm.net]
反省してます

831 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 01:01:49.61 ID:QlIAHX1m.net]
なんやなんや

832 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 02:49:36.41 ID:Xhtlj9Sh.net]
マトラボスレ勢いなさすぎ。
誰かイコライザのコーディング教えてくれや

833 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:15:05.48 ID:Pl2/S2ti.net]
イコライザってなに?



834 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:18:25.05 ID:EjX8GKMV.net]
信号処理

835 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 03:53:21.14 ID:qczVS6OA.net]
FFTか。言葉しかしらん。

836 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 04:57:26.35 ID:8Y7m8SBN.net]
高速フーリエ変換か

837 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 08:16:10.34 ID:58JMlqKS.net]
placement newの関数を自分で書く素振りを見せながら
newをインクルードとか、何言ってんだか。
標準ヘッダーが衝突するなら処理系作った奴に聞け

838 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/09/14(水) 11:33:48.49 ID:3NkcLiKm.net]
>>825
ありがとうございます。

839 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 18:34:08.81 ID:O92aoqkR.net]
CppUnitによるテストって登録件数が多くなった場合…なんとかならんもんかね
1000を越えるとかマジで嫌なんだが

840 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 18:59:00.04 ID:EjX8GKMV.net]
何が嫌なんだ
時間がかかるってことなら分割したらいいじゃないか

841 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:15:10.96 ID:O92aoqkR.net]
>>828
コードがめっっっちゃ汚くならね?
1000個テストするなら1000行似たこと連続で書くんでしょ?

842 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:27:01.68 ID:EjX8GKMV.net]
>>829
テストコードも名前を付けてモジュール化すればすれなりに見やすくはなるんじゃないか
どこで何のテストをしているか見つけやすくなるし

843 名前:デフォルトの名無しさん mailto:sage [2016/09/14(水) 19:57:41.83 ID:C1VR7bWr.net]
>>830
ファイル分割するってことだろうか?



844 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 00:14:31.25 ID:SldeaLfO.net]
別にそれCppUnit 固有の問題じゃねーじゃん。
お前のテストコード作成全般の問題だろ。

845 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 01:28:50.14 ID:NSWALpAD.net]
>>829
「似たこと連続で」ならマクロでも何でも使ってまとめりゃいいだろ。

846 名前:デフォルトの名無しさん [2016/09/15(木) 06:31:33.82 ID:eCorjc8D.net]
ideone.com/VtKz07

nonbiri-tereka.hatenablog.com/entry/2014/06/25/093327を見て勉強中なのだが、
なぜ、test_addでaddをラップしてるのかがわからない
addに引数を持たすことが出来ないのか。
また、addの足し算が引数をaが1-100だった場合、今の俺では100個記述することになる
マクロを使用とかすれば解決できそうだけど、適切に使う方法が思いつかないんだ…
外部ファイルとかからの読み込みでも良いので何かしらヘルプ・・・・

void FunctionTest::test_add(){

CPPUNIT_ASSERT_EQUAL(3+2,func->add(3,2));
}

この部分を何個も書いて
CPPUNIT_TEST(test_add);//メンバ関数の登録ってのを

CPPUNIT_TEST(test_add);//メンバ関数の登録
CPPUNIT_TEST(test_add1);//メンバ関数の登録
CPPUNIT_TEST(test_add2);//メンバ関数の登録
.....となってしまう

847 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 08:43:36.54 ID:wjxOqoMl.net]
コンパイル時と実行時の違いがあるから直接指定はできないよ。
lambdaとかbindでいけんじゃね?試してないけど。

848 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 09:20:50.32 ID:Dfv6m4lx.net]
凝ったことをした挙句テスター自体にバグ仕込んでテスト無効とか馬鹿らしいから
1回きりと割りきってシンプルに書くという考えもある

849 名前:デフォルトの名無しさん [2016/09/15(木) 10:13:14.67 ID:dJJn2WBE.net]
template<typename...Args> void hoge(Args...args){}
hoge({1,2,3});
としたら
hoge(std::initializer_list<int>)
のように推論して欲しいのですが何故できないのですか

850 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 10:40:36.62 ID:krf6YZ+h.net]
ideone.com/zJhotB

851 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 10:41:24.48 ID:krf6YZ+h.net]
投稿を暴発してしまった。
自動では推論してくれないみたいだねぇ。なんでだろう・・・。

852 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 14:05:17.34 ID:OOrl8bCH.net]
勝手に変換されても困るべ

853 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 16:06:02.66 ID:qnepHcI/.net]
C++PRIMER 5TH KINDLE版でシコシコするのはどう思いますか。
尼ではさっぱり人気がないようですが。



854 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 16:40:29.83 ID:gyul79OX.net]
あの手の本は意味がないよ
どんだけ、言語の仕様に詳しくなっても何の得にもならんからな

855 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 19:22:13.92 ID:BBoNUH+R.net]
熱い江添批判






[ 続きを読む ] / [ 携帯版 ]

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

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