C++相談室 part103

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part102
http://toro.2ch.net/test/read.cgi/tech/1368314383/

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

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/
2デフォルトの名無しさん:2013/06/15(土) 23:23:22.73
乙乙〜
3デフォルトの名無しさん:2013/06/15(土) 23:23:58.22
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

>>1
4デフォルトの名無しさん:2013/06/16(日) 00:18:03.90
質問です
std::regex ex("[abc]{2,4}.*");
auto result = std::regex_match("bbbXXXX", ex);
ここで "bbb"を取り出したいのですが
どげんしたらよかですか?
5デフォルトの名無しさん:2013/06/16(日) 01:24:59.55
C++でなく正規表現だろ
6デフォルトの名無しさん:2013/06/16(日) 01:56:06.88
[abc]{2,4}を()で囲んでmatch_resultsを用意してそれを受けるregex_matchを使ってその結果から取り出せ
74:2013/06/16(日) 03:02:06.42
>>6
ご回答ありがとうございます
最初の4文字は取り出せたのですが
その後がうまくいかんです
http://ideone.com/ZK7m6t
aXでなくXを取り出したかったですが
どげんしたらよかですか?
8デフォルトの名無しさん:2013/06/16(日) 03:19:01.03
それは取り出すじゃなくて取り除くって言うと思うんだが、
括る場所変えるだけでいいし正規表現勉強してこいボケ
9デフォルトの名無しさん:2013/06/16(日) 09:27:03.42
ideoneのパターンのキャプチャ動作がおかしくない?
. なのに2文字返ってくるし
10デフォルトの名無しさん:2013/06/16(日) 09:57:41.40
>>9
Visual C++だと (.) は X になるね
11デフォルトの名無しさん:2013/06/16(日) 10:07:26.48
gccのregexは公式には未実装(扱い)だからしかたない
12デフォルトの名無しさん:2013/06/16(日) 10:27:45.77
コメントアウト外したら落ちるぞw
http://ideone.com/abnB6q
確かに未実装のようだ
13デフォルトの名無しさん:2013/06/16(日) 14:55:39.38
boostの正規表現とは仕様が違うの?
14デフォルトの名無しさん:2013/06/16(日) 15:23:17.95
>>13
デフォルト動作が違うみたい。モードフラグがいくつかあったべな。
あと、VC++10でバグっぽいのが見つかったので、報告済み。
15デフォルトの名無しさん:2013/06/16(日) 15:25:39.52
boost.regexと設計と使い方は同じ。細かい違いはある
16デフォルトの名無しさん:2013/06/16(日) 15:33:21.74
boostをそのまま持ってくればいいんじゃないの?と思ったが
若干違いがあるのね

でも未実装扱いってことは、
boostさん、gccにそのまま使わせてあげてないってこと?
17デフォルトの名無しさん:2013/06/16(日) 15:40:46.05
質問です
heapクラスを作れと言われたのですが、
ヒープクラスというと、一般的にどんなものを用意すればよいでしょうか?
18デフォルトの名無しさん:2013/06/16(日) 15:55:21.43
要件が「クラス名がheapであること」だけなら
class heap { };
としか作りようがない
つーか要求にないことを勝手にやってはいけない

一般的にというならstd::make_heapあたりを参考にすべきだろうな
19デフォルトの名無しさん:2013/06/16(日) 16:05:20.70
ヒープってのが本当にデータ構造としてのヒープなら
そういうのでいいけど
ヒープメモリを確保するクラスという意味なら・・・まあそんな事は無いか
20デフォルトの名無しさん:2013/06/16(日) 16:09:02.18
ヒープ(Heap)は、木構造の一つ。単に「ヒープ」という場合、二分木を使った二分ヒープを指すことが多いため、そちらを参照すること。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Binary_heap_indexing.png
ヒープ - Wikipedia
21デフォルトの名無しさん:2013/06/16(日) 16:15:39.96
>>19
確かにheapがデータ構造のことなのかヒープ領域なのかという事にも悩みました

ただ1つ書き忘れていたことがあって、速度を優先した〜 とあったのと、
一応色々ネットで調べた結果、mallocとかfreeとかを使って、ヒープ領域を確保するクラスのことなのかなぁ
という予測はしました。
ただそれでもハッキリとしなかったので、
heapクラスといえばこういうものだよ というものがあればと思い質問させてもらいました。
22デフォルトの名無しさん:2013/06/16(日) 16:21:13.47
どういう流れで出された課題なのかが問題だ
23デフォルトの名無しさん:2013/06/16(日) 16:22:34.00
速度を優先〜ならば new を使ってヒープにインスタンスを確保しないだろうし‥‥
そのヒープクラスってどういう意味かこっちがききたいくらいだ。

まさか二分ヒープ=配列による実装のこと?それならば速いだろうが‥‥
ここでやってたやつね
http://toro.2ch.net/test/read.cgi/tech/1364700745/984,981
24デフォルトの名無しさん:2013/06/16(日) 16:27:43.78
普通はヒープ構造を配列で実装する事を指すんじゃないかなあ
25デフォルトの名無しさん:2013/06/16(日) 16:42:23.27
仕様が不明瞭だったら責任者に問い合わせてボコボコにしてやれ
それが社会に出てから必要な能力になる
2617:2013/06/16(日) 16:48:06.62
いろいろ意見、情報ありがとうございます
どうやらデータ構造派の方が多そうですね・・・

とりあえずそちらで作成して、
やんわりと仕様がよくわからなかったという文句とともに提出しようかと思います
27デフォルトの名無しさん:2013/06/16(日) 16:58:44.12
C++のnewは「フリーストア」から
メモリを確保します。
ヒープメモリ何それ。
28デフォルトの名無しさん:2013/06/16(日) 17:06:41.23
もし仕事ならちゃんと確認した方がいいと思うけど
学校の宿題ならデータ構造だろうけど、会社だとメモリの可能性もある
29デフォルトの名無しさん:2013/06/16(日) 17:13:31.65
newの実装は大体mallocだぁね
30デフォルトの名無しさん:2013/06/16(日) 17:20:22.88
ヒープクラス = 二分木クラス
31デフォルトの名無しさん:2013/06/16(日) 18:46:50.85
newまたはNewは、C++を始めとしたオブジェクト指向プログラミング言語において、インスタンスを作成する演算子である。多くの場合、ヒープ領域からの動的メモリ確保(動的記憶域確保)を伴う。

って書いてあった
32デフォルトの名無しさん:2013/06/16(日) 19:16:10.97
C++ の規格ではヒープという言葉で表現されてなくて
フリーストアって書いてあるんだよね
データ構造のヒープと紛らわしかったからかは知らないけど
33デフォルトの名無しさん:2013/06/16(日) 19:44:17.37
高速化のためにメモリプールとか使う処理系が多くなったのかな
3417:2013/06/16(日) 19:47:28.95
C++でやろうとおもったので、ここで質問させてもらったのですが、
言語指定はないので言語特有の呼び方とかはあまり関係ないと思います
説明不足でしたすいません
35デフォルトの名無しさん:2013/06/16(日) 19:58:15.60
make_heapつったろ
早く調べろ!
36デフォルトの名無しさん:2013/06/16(日) 22:31:05.22
make_heapはもとの要求から外れる
>>18の言うように
 class ヒープ final {};
これが正解
3717:2013/06/16(日) 22:45:02.22
何度もすいません
あれから色々なところを調べました。
自分の持っている書籍もみたところ、
>>23>>24
のように二分木を配列で実装することのような気がします

とはいえ確実ではないので
class Heap{};とかくしかないのでしょうが
やはり何かは書いておきたい

ということで、>>23のスレを参考にしたいと思います
何度も付き合っていただきありがとうございます
38デフォルトの名無しさん:2013/06/16(日) 22:54:48.21
class Heep {
 // <algorithm>のstd::make_heapで何かする予定
};

これでおk
39デフォルトの名無しさん:2013/06/17(月) 21:40:39.71
Cのaligned_allocに相当する関数はC++にありますか?
40デフォルトの名無しさん:2013/06/17(月) 21:42:37.42
ないね
C11対応コンパイラならC++でも使えるんじゃないの?とは思うが、知らん
41デフォルトの名無しさん:2013/06/17(月) 21:51:03.04
>>40
素早い回答ありがとうございます
#include <stdlib.h>
でイケました
42デフォルトの名無しさん:2013/06/18(火) 13:12:34.20
何で使えないかもと思ったんだろうか。
43デフォルトの名無しさん:2013/06/18(火) 23:25:42.26
このプログラムですが
名前と得点をリンクさせて順位の表を作りたいです
教えてください

http://up3.viploader.net/ippan/src/vlippan316685.png

http://www1.axfc.net/uploader/so/2939789
44デフォルトの名無しさん:2013/06/18(火) 23:50:53.21
>>43
・「void main()」
・ローマ字変数名
・定数部分を開業せず横にベタ書き
・構文内にスペースで隙間を開けず詰め詰め
・滅茶苦茶なインデント

俺は読むのを諦めた
45デフォルトの名無しさん:2013/06/18(火) 23:53:12.63
>>44
そんなに見づらいのか・・・
申し訳ない
講義でやったのをいじっただけなんだ
課題はこれで
http://up3.viploader.net/ippan/src/vlippan316688.png
配列を使って書くんだそうで
ifを使えだそうなんだ
教えてください
46デフォルトの名無しさん:2013/06/18(火) 23:56:31.00
宿題スレ行けよ
C/C++の宿題片付けます 165代目 http://toro.2ch.net/test/read.cgi/tech/1370255305/
荒れててまともに機能してないかも知れないが2chはそんなものだ
47デフォルトの名無しさん:2013/06/19(水) 00:14:54.91
>>45
エクセルのシートをワードに貼り込んで送り付けてやりたいw
提出方法について泣くまで問い詰めたい。
48デフォルトの名無しさん:2013/06/19(水) 00:19:33.09
何で学校の先生にきかないんだろうな
学費にはそういう費用も含まれてるのに

親が払った学費をドブに捨てるのが趣味なのかな
49デフォルトの名無しさん:2013/06/19(水) 01:08:55.46
>>47
寧ろ、VBAで書いてしまいたいw
50デフォルトの名無しさん:2013/06/19(水) 01:10:31.78
>>45
>講義でやったのをいじっただけ
百歩譲ってそうだとしても、変数名ローマ字云々は一般には糞扱いだぜ?
(特に「void main()」は厳密には文法違反だし)
と言うか、
仮にデータ部分を外部ファイルに分けて用意することが許されなかったとしても、
仮にmain以外の関数を定義することが許されなかったとしても、
仮に構造体や長い英字変数名(キャメル記法)を使うことが許されなかったとしても、
もうちょい分かりやすく書けなかったのかと言いたい
51デフォルトの名無しさん:2013/06/19(水) 01:10:57.73
>>45
>44に付け加えて、
・CなのかC++なのかはっきりしろ。
・変数宣言は、局在化したいのか関数の先頭に分離したいのかはっきりしろ。
52デフォルトの名無しさん:2013/06/19(水) 01:13:34.39
出題者の色々アレな点を鑑みると、void meinでなくて良かったと考えるべきだろうw
53デフォルトの名無しさん:2013/06/19(水) 01:16:51.31
おまいら意地悪だな
デジカメでこれだけクリアな画像が撮れる奴がいるか?
もっと驚嘆してやれよ
54デフォルトの名無しさん:2013/06/19(水) 01:19:43.33
これでも読んでもちつけ
http://japan.zdnet.com/development/sp/35032305/
55デフォルトの名無しさん:2013/06/19(水) 01:45:45.79
>>51
C++スレでC++の文法に従ったプログラムを
見せているのに、Cなのかはっきりしろとは
これ如何に
56デフォルトの名無しさん:2013/06/19(水) 03:27:21.06
>>55
C++の流儀に従うなら従う、必要機能以外C互換機能で済ますなら済ます、どっちかにしろってことだろう。

でも任意箇所での変数宣言はC99とかならCでもできるし(-Dprintf_s=printfつければtccでも通る)、
printf_sに目を瞑ればた只々下手クソなCコードととしてコンパイル通るといえば通る。
(手元にあるVC2010のCL /TCでは非ブロック先頭変数宣言でコケるので違うかもだが)

printf_s使ってる辺り(聞きかじりの)新機能使ってCのコード書いてるつもりなのか、
C++の講義だけどCのAPIしか叩かないちょっとアレな方針なのか、どっちだろうな。
scanf/printfは便利だけど、C++の講義なら早々に済ませてstd::cout/std::cin使うべきだろう。
57デフォルトの名無しさん:2013/06/19(水) 06:39:53.58
バカほど長文
58デフォルトの名無しさん:2013/06/19(水) 07:33:42.66
>>56の要約:
「C++というなら素直にiostream使っとけ」
59デフォルトの名無しさん:2013/06/19(水) 07:44:13.98
iostreamは糞だから別にmustじゃない
60デフォルトの名無しさん:2013/06/19(水) 08:38:37.21
iostreamを駆逐しうるライブラリは?
61デフォルトの名無しさん:2013/06/19(水) 09:19:59.18
ストリームデバイスの抽象化としてiostreamの設計は妥当で悪くない
ブロックデバイスに対してもストリームデバイス用に設計されたインターフェイスを使わなければならないことが問題だろ
62デフォルトの名無しさん:2013/06/19(水) 11:18:33.34
cout << a << b << c
これはいいけど
cin >> a >> b >> c
これはおかしい
論理性のカケラも無い
63デフォルトの名無しさん:2013/06/19(水) 11:38:44.91
質問させてください。

#ifdef FOO
 int var;
#endif

だと宣言のたびに3行も使ってしまって見づらいので、
初めに
#if 1
# define FOO /##/
#else
# define FOO
#endif

として、以降

FOO int var;

と1行で書こうと思いました。
vc++ではこのやり方でうまくいくのですが、
xcodeでは Pasting formed'//', an invalid preprocessing token というエラーになってしまいます。

コメントアウトのオンオフを1行でこなせる、環境依存でないマクロというのはないのでしょうか?
64デフォルトの名無しさん:2013/06/19(水) 12:06:16.86
まさかと思うが、ObjectiveCじゃないだろうな。
65デフォルトの名無しさん:2013/06/19(水) 12:13:47.28
いえ、開発環境としてxcodeをつかってはいますが、c++のコードです。
66デフォルトの名無しさん:2013/06/19(水) 12:25:03.11
#define DEF_VAR(type,name) type name;

DEF_VAR(int, var)

こういうのは見かけるけど
67デフォルトの名無しさん:2013/06/19(水) 12:44:11.22
68デフォルトの名無しさん:2013/06/19(水) 13:16:38.82
>>63
それ、gccでもエラーになる

これでいいんじゃね?
テンプレートとかでstatement中にカンマが入るとおかしくなるんで
そういう場合は事前にtypedefしておく

#if 1
#define FOO_CASE(statsment)
#else
#define FOO_CASE(statement) statement
#endif

FOO_CASE( int var = 6 );
69デフォルトの名無しさん:2013/06/19(水) 13:47:52.81
>>63
関数内の宣言限定。
http://ideone.com/ykPJCB
70デフォルトの名無しさん:2013/06/19(水) 13:58:51.41
そこは
#define UNKO if ( true ) ; else
じゃねーの
7163:2013/06/19(水) 14:28:11.36
可読性をあげることが目的なのでタイプ修飾子と同じような書式が理想だったのですが、
DEF_VAR(int, var) やFOO_CASE(statement) statement のように括弧を使うしかなさそうですね。
#ifdefマクロを使うよりは読みやすそうですし、これで試してみます。
ありがとうございました。
72デフォルトの名無しさん:2013/06/19(水) 15:00:30.41
>>70
これ C だと動くのか
73デフォルトの名無しさん:2013/06/19(水) 15:17:10.53
>>69
どれだけ糞なコード思いつくんだよw
http://ideone.com/tCZsD9
74デフォルトの名無しさん:2013/06/19(水) 15:21:40.92
そこは FUN in FUN だろ わかってねーな
75デフォルトの名無しさん:2013/06/19(水) 19:08:15.61
if-else を使う方法は完全に消えるわけではないので
コンパイル対象になるから注意が必要

#ifdef を使った方が
エディタが色付けしてくれるので
読みやすい気もする
76デフォルトの名無しさん:2013/06/19(水) 22:59:54.08
一番のウンココードは
#ifdef FOO
 int var;
#endif
環境依存のコードは局所化しろよ。
77デフォルトの名無しさん:2013/06/20(木) 12:30:36.60
分りやすく猿にも分かるコードを書くのが職業プログラマー
難解だけど高度な内容を含んでいるのが個人プログラマー
78デフォルトの名無しさん:2013/06/20(木) 12:57:18.63
という、コード書けない奴の思い込みでした。
79デフォルトの名無しさん:2013/06/20(木) 13:08:03.35
>>78
言ったな
コード書いてみろや
80デフォルトの名無しさん:2013/06/20(木) 13:53:26.51
81デフォルトの名無しさん:2013/06/20(木) 13:55:44.36
>>77
猿にも分かる--->単純アルゴリズム
いきなり、矛盾だな。
82デフォルトの名無しさん:2013/06/20(木) 14:17:28.27
カスしかいないスレ
83デフォルトの名無しさん:2013/06/20(木) 14:56:33.78
職人かと思ったがよくみたら職業マか
分りやすく猿にも分かるコードを書けるのは才能だぞ
84デフォルトの名無しさん:2013/06/20(木) 14:56:35.45
>>81
待て待て、その方は京大の・・・
85デフォルトの名無しさん:2013/06/20(木) 16:22:38.83
>>80
なんだ>>78はQか
Qが荒らしているという事実が判明しました
86デフォルトの名無しさん:2013/06/20(木) 16:30:40.62
どこが荒らしなんだか
87デフォルトの名無しさん:2013/06/20(木) 19:03:44.46
本当のプロフェッショナルは仕様書を書くのが楽でテストも自動化しやすいものを作る
つまり純粋関数型だけが真のプロフェッショナルに許された技術なのだ
88デフォルトの名無しさん:2013/06/20(木) 19:16:35.18
キチガイ現る
89デフォルトの名無しさん:2013/06/20(木) 19:36:12.66
真実をズバリと突かれて平静を保ちたいがために声を荒げて反論したくなる気持ちもわかる
しかし君が何と言おうと関数型が世界の選択である事実には変わりないのだ
90デフォルトの名無しさん:2013/06/20(木) 19:38:50.52
シロナガスクジラにもでかすぎる釣り針で何が釣りたいんだ?
91デフォルトの名無しさん:2013/06/20(木) 19:40:51.22
おろかなる旧人類よ
君たちが関数型の真価に気付き
種としての夜明けを迎えるのは何年後だろうか?
92デフォルトの名無しさん:2013/06/20(木) 19:41:57.57
ここは、「ボクのかんがえたさいきょうのぷろへっしょなる」を開陳する場だぜ。
93デフォルトの名無しさん:2013/06/20(木) 20:14:44.36
消費するスタックサイズ計算出来ない奴はお呼びじゃない
94デフォルトの名無しさん:2013/06/20(木) 20:53:11.42
仕事で古いC++のアプリの保守することになったんだけど
今までC++の経験がなくて何から勉強すればという状態です。

保守するプログラムは
VC++6.0
MFCは使っていない

とりあえず、
新Visual C++6.0入門 ビギナー編
http://www.amazon.co.jp/gp/product/4797307609/
新Visual C++6.0入門 シニア編
http://www.amazon.co.jp/gp/product/4797308028/
を買ってみたんですがほかにお勧めとかあったら教えてください。
よろしくお願いします。
95デフォルトの名無しさん:2013/06/20(木) 21:06:40.22
96デフォルトの名無しさん:2013/06/20(木) 21:07:06.28
>>94
Bjarne Stroustrup. The C++ Programming Language Fourth Edition
97デフォルトの名無しさん:2013/06/20(木) 21:13:52.65
ハゲの妄想本は糞
絶対読むな
98デフォルトの名無しさん:2013/06/20(木) 21:23:04.31
いや、4th は買いだよ
立ち読みでいいから確認してみな

あれ以上に解りやすい説明を、おまえできるか?
99デフォルトの名無しさん:2013/06/20(木) 21:43:14.62
>>94
仕様書が一番わかりやすいよ
100デフォルトの名無しさん:2013/06/20(木) 22:24:47.90
VC++6.0 なのに C++ の本をすすめるのは間違い
101デフォルトの名無しさん:2013/06/20(木) 22:47:47.60
>>94
その二冊はMFCの解説書でしょ…
102デフォルトの名無しさん:2013/06/20(木) 22:51:27.92
きっとVC6が何かわかってないんだよ
103デフォルトの名無しさん:2013/06/20(木) 22:54:06.68
>>94
このシリーズの1巻がおすすめだ。
2と3はあなたが持ってるのとかぶる。
あとは猫でもわかるのサイトとか

ジャンルがわからないけど
Windowsの仕組みの勉強のほうが先かも
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1348882503
104デフォルトの名無しさん:2013/06/20(木) 23:07:17.95
>>101
> その二冊はMFCの解説書でしょ…
そうですね・・・。よくみてませんでした。
IDEの使い方も載ってそうだし、中古安かったので買ってみました。

>>103
>このシリーズの1巻がおすすめだ。
1巻も買ってみます。

>>Windowsの仕組みの勉強のほうが先かも
うーん。一応VB.netでWindowsアプリの開発経験はあるんですが
Windows APIとかよくわからないのが多いんですよね。
参考にします。
105103:2013/06/20(木) 23:19:17.54
>>104
ごめんこっちの1巻
http://www.amazon.co.jp/dp/4881358219
106デフォルトの名無しさん:2013/06/20(木) 23:19:48.72
MFC使わないんならC++も必要ない
Win32 のウインドウプロシージャ関連をぐぐればOK

…Cはわかってるんやろか
107デフォルトの名無しさん:2013/06/21(金) 01:13:01.68
>>104
MFC抜きなら(GUIの場合だが)スケルトンの学習は必須。
アプリの開始位置のWinMain関数とウィンドウクラスの登録(クラスを登録する事で
登録した時の情報に従ったウィンドウのパターンが出来る。それを呼び出してウィンドウを作る)
そして最も手を加えるWindowProc(ウィンドウプロシージャ)コールバックとして登録することで
システムから呼び出される。キーが押された、マウスがウィンドウを通過した、マウスボタンが
押された、などの情報が全て送られてくる。それを条件によってさばいていくのが
MFC抜きのC/C++でのWindowsアプリの形。
108デフォルトの名無しさん:2013/06/21(金) 01:25:09.14
まず、コンソールアプリなのか
サービスアプリなのかCOMライブラリなのか
Win32を使用したGUIアプリなのか
プログラムの形態を確認しろよ
Oracle Pro*Cのバッチプログラムだったら
WindowProcの知識なんて殆ど役に立たないぞ
109デフォルトの名無しさん:2013/06/21(金) 01:42:31.17
スタンドアロンのGUIアプリ一択だろ
エスパー能力が足らんな
110デフォルトの名無しさん:2013/06/21(金) 10:26:53.01
111デフォルトの名無しさん:2013/06/22(土) 01:29:57.15
floatなどをクラス内で定数宣言をするにはどうすればいいでしょうか
static const int と同じようなものを作りたいと考えています
112デフォルトの名無しさん:2013/06/22(土) 01:31:46.67
>>111
インライン関数使えや
Perlのように
113デフォルトの名無しさん:2013/06/22(土) 01:51:45.96
>>111
諦めてクラスの外に書く
namespace unko {
 const float pi = 3;
}
114デフォルトの名無しさん:2013/06/22(土) 02:07:55.85
>>112
public:
クラス名() : m_f(0.0f){}
private:
const float m_f;
ということでしょうか。Perlを触ったことがないのでアレです

>>113
C++の設計思想と言うか、考え的に確かクラス内定数は作らせたくないんですよね
諦めてクラス外に書く方が一番ですかね・・・

JAVAで言うpublic static final float 〜〜 みたいなことができたらなぁと思ったのですが・・・
115デフォルトの名無しさん:2013/06/22(土) 02:15:51.24
クラス内に定数を置きたい理由って何だろう
116デフォルトの名無しさん:2013/06/22(土) 02:22:04.56
>>115
使うかどうかは別として、できるのかなと気になったので・・・
117デフォルトの名無しさん:2013/06/22(土) 04:21:40.13
C++11
118KUSO KOTE:2013/06/22(土) 07:24:54.81
>>111
一応クラスの中の宣言…
http://ideone.com/jw4qZ3
119デフォルトの名無しさん:2013/06/22(土) 07:40:33.92
円周率 = 3
120デフォルトの名無しさん:2013/06/22(土) 08:23:06.30
>>114
単純に、
classs Foo {
public:
 float e() const { return 2.718281828459045f; }
 void Print() { std::cout << e() << std::endl; }
};
みたいな、
Perlと違ってあくまでe()であってeとは書けないが、
- 定数の定義と宣言をクラス内で一挙にやれる
- 実行コストは#defineやクラス外でやるconst float e = 〜;と同等の低さが気体できる
という意味で、>111な要求をおそらく満たすから無問題、みたいな
121デフォルトの名無しさん:2013/06/22(土) 08:28:10.87
どうしても構文にこだわりたいのなら、namespaceを使っても一応同等のことができそうな、
つまり、
 namespace foo {
  const float e = 2.182.18459045f;
  void print { std::cout << e() << std::endl; }
 }
みたいな、

テンプレートを駆使すればもっと奇天烈奇怪で驚天動地な答えもあるかも試練が知らん
122121:2013/06/22(土) 08:30:55.49
すまん
 誤: void print { std::cout << e() << std::endl; }
 正: void print { std::cout << e << std::endl; }
123デフォルトの名無しさん:2013/06/22(土) 08:41:10.57
結論、C++はうんこ
124デフォルトの名無しさん:2013/06/22(土) 14:13:52.58
>>120
なるほど、そのようなやり方が・・・
ありがとうございます!
125デフォルトの名無しさん:2013/06/22(土) 15:53:47.24
完璧な言語など無いよ
しいて言えばC#だろう
126デフォルトの名無しさん:2013/06/22(土) 15:56:03.63
>>123
ありがとうございます
127デフォルトの名無しさん:2013/06/22(土) 16:15:57.53
>>126
ありがとうございます、じゃねーよ( ゚д゚)、ペッ
128デフォルトの名無しさん:2013/06/23(日) 06:13:24.87
>>127
ありがとうございます
129デフォルトの名無しさん:2013/06/23(日) 10:14:06.46
いえいえ
130デフォルトの名無しさん:2013/06/23(日) 14:46:06.94
お先にどうぞ
131デフォルトの名無しさん:2013/06/23(日) 20:29:23.29
ヘッダに静的変数を定義するにはどうしたらいいですか?
class unko {
public:
. static mutex lock1;
}
とすると定義がないと怒られるので
class unko {
public:
. static mutex lock1;
}
mutex unko::lock1;
としたところ多重定義と怒られました
class unko {
public:
. mutex& get_lock() { static mutex u; return u; }
}
とすると一応できるのですが、カッコ悪いのと、実行のシングルスレッドが保証できないのでできれば避けたいです
132デフォルトの名無しさん:2013/06/23(日) 21:32:14.62
>>131
無理だと思う。
133デフォルトの名無しさん:2013/06/23(日) 21:33:22.30
よくわからんがクライアントプログラムがインクルードする度に定義されたいの?
134KUSO KOTE:2013/06/23(日) 21:36:13.98
>>131
これでOK…(たぶん)
http://ideone.com/HhhTI8
135デフォルトの名無しさん:2013/06/23(日) 21:42:50.86
変数名unkoとかやめーい
136デフォルトの名無しさん:2013/06/23(日) 21:48:16.64
ヘッダはstatic変数は宣言で
定義はcppが常識
137デフォルトの名無しさん:2013/06/23(日) 22:15:03.49
UNCHI(United China)、UNKO(United Korea)はもうすぐ無断で使用不可になるから気を付けるように。
138デフォルトの名無しさん:2013/06/23(日) 22:22:02.03
ホゲもクソも変わらん。
クソは確信的だろうけど、
むしろホゲを堂々と使う人の方が
ヤバいと思う。特にウニクサー。
139デフォルトの名無しさん:2013/06/23(日) 22:32:40.40
最近は、MooとかMew使うことにしてる
140デフォルトの名無しさん:2013/06/23(日) 23:19:13.52
>>137
United Koreaって北朝鮮のヤバさと
韓国の酷さが合体するの?
141デフォルトの名無しさん:2013/06/24(月) 00:31:53.51
ネトウヨに一々反応するな
142デフォルトの名無しさん:2013/06/24(月) 08:35:23.19
そういう事にしとけば楽だよねー。
143デフォルトの名無しさん:2013/06/24(月) 10:06:19.25
すみません、相談いいですか?
二次元配列のvectorを管理するクラスでエラーが出て困っております。
classをコンテナとしたvectorの二次元配列を宣言をするには
 vector<vector<class型名(仮にAとします)*> >配列名(仮にBとします)
で大丈夫ですよね?そして二次元配列の行と列の長さを初期化のところで
確定させたいのでresizeを用いて行と列の長さを決定、
そのあと二重ループを用いて、二次元配列のすべての要素にAを格納させる。
これらのことをマネージャclass(仮名)でやっているのですがエラーが出てしまいます。
開発環境はvisualstudioなのですが、エラーはerror LNK2001: 外部シンボル云々というもので
(もちろん、セットでerror LNK1120: 外部参照 1 が未解決ですも続いてます)、
どうやら二次元配列の中にBが格納されておらず、
そこを読む処理が「無いぞ」とエラーを吐いてるみたいです。
<マネージャclassにて>
二次元配列の宣言 vector<vector<A*> >B;

初期化の関数内
void マネージャCLASS::Initialize(int m_line,int m_col){
B.resize(m_line);
for(int i = 0; i<m_line; i++){
B[i].resize(m_col);}

for(int line=0; line<m_line; line++)
{
for(int col=0; col<m_col; col++)
{
A* add = new A();
add->Initialize();
B[line][col] = add;}}
としています。これらに問題ありますか?
また、このような処理を書く場合に気を付ける箇所はありますか?
コンテナに使っているAクラスには変数と関数しか書いてません。
144デフォルトの名無しさん:2013/06/24(月) 10:11:02.08
>>143
エラーメッセージを一字一句飛ばさずに読め、それでわからなければ、同じエラーの出るコードと
エラーメッセージを一字一句飛ばさずに貼れ。

それとは別にそのコード、 new で入れた A の delete はどうなってるの?
resize(), new, Initialize() など例外の飛びそうな操作が入り混じっていながら
直接メンバ変数 B をいじくってるんで、たぶん例外安全性の問題もある。
145デフォルトの名無しさん:2013/06/24(月) 10:36:47.00
>>144
レスありがとうございます。

エラーの全文です(長すぎる行と規制が入ったので改行してます
(コンテナCLASSを型名とした二次元配列でそれはマネージャclassで宣言、初期化してます)

1>その配列を読もうとしてるクラス名.obj : error LNK2001: 外部シンボル ""public: static class std::vec
tor<class std::vector<class コンテナCLASS *,class std::allocator<class コンテナCLASS *> >,class std:
:allocator<class std::vector<class コンテナCLASS *,class std::allocator<class コンテナCLASS *> > > > マネ
ージャCLASS::配列名" (?配列名@コンテナCLASS@@2V?$vector@V?$vector@PAVコンテナCLASS@@V?$allocator@PAVコンテ
ナCLASS@@@std@@@std@@V?$allocator@V?$vector@PAVコンテナCLASS@@V?$allocator@PAVコンテナCLASS@@@std@@@std@@@2@@std@@A)" は未解決です。

>new で入れた A の delete はどうなってるの?
格納後のAのdeleteですか?Aの中でdelete作ってますが。。。
146デフォルトの名無しさん:2013/06/24(月) 11:26:16.09
>>145
コードはどうした?

"コンテナCLASS" とか言ってるのは要素型のことなんだろうけど、一般的に
コンテナクラスと言えば vector などモノを入れるクラスのことを指すんで、その呼び名は
やめたほうがいいよ。

そのエラーメッセージは "public: static ... マネージャCLASS::配列名" の定義が無いと
言っている。
147デフォルトの名無しさん:2013/06/24(月) 11:35:22.75
>>131 の続きに見えなくもない
148デフォルトの名無しさん:2013/06/24(月) 12:15:23.21
>>146
>"public: static ... マネージャCLASS::配列名" の定義が無いと言っている。

どういうことでしょう??
>>143にて書いてるようにマネージャCLASSにて、vector<vector<A*> >B;と宣言はしております。

あとコードを張り付けるにもこの掲示板は行数規制がキツイみたいなので
連投せざるを得ません。例えば、確認したい箇所を限定して頂けないでしょうか?
エラーはどうやら、初期化後、別の場所からゲッターなどで要素の中身を確認しようとしたら吐くようです。
149デフォルトの名無しさん:2013/06/24(月) 12:17:31.41
>>147
?一応申しますと、>>131は別の方です
150デフォルトの名無しさん:2013/06/24(月) 12:42:02.88
>二次元配列の宣言 vector<vector<A*> >B;
本当にそう宣言してるか?static付けてないか?
151デフォルトの名無しさん:2013/06/24(月) 12:44:47.38
>>150
はい、staticつけてます。
よくわかりましたね??
もしかしてstaticつけてたらダメなんでしょうか?
152デフォルトの名無しさん:2013/06/24(月) 13:03:01.56
staticメンバ変数と非staticなメンバ変数の違いはわかってるか?

わかってて使ってるなら
staticメンバ変数はクラス定義の中に書いてもそれは宣言だけで定義したことにならない
クラス定義の外(かつプログラム全体のどこか一箇所だけ)で
 vector<vector<A*> > マネージャCLASS::B;
として実体を定義しなければならない
153デフォルトの名無しさん:2013/06/24(月) 13:16:40.36
>>152
ご指摘通り、配列を実体化してませんでした。。。忘れてました。
どうもありがとうございます!!
154デフォルトの名無しさん:2013/06/24(月) 13:40:54.89
tdmつかってます。cstdintをincludeしてもint64_tが使えないのはなぜですか?
つかえるようにしかた教えてください。
155デフォルトの名無しさん:2013/06/24(月) 14:41:26.54
>>154
tdmつかってないけど、std::int64_tなオチじゃね?
156デフォルトの名無しさん:2013/06/24(月) 14:59:41.36
じゃない。
157デフォルトの名無しさん:2013/06/24(月) 15:06:14.54
#include <stdint.h>
ならstd::付けなくても大丈夫じゃね?
158デフォルトの名無しさん:2013/06/24(月) 15:08:08.99
cstdintのヘッダーみてるとマクロで使えないようにしてあるみたいっす。
159デフォルトの名無しさん:2013/06/24(月) 15:10:29.91
-std=c++0xオプションが要るとか
手持ちのg++ 4.4.3だとこのオプション付けないとワーニング表示するよ
160デフォルトの名無しさん:2013/06/24(月) 15:13:00.16
オプションはつけてマッスルよ。
161デフォルトの名無しさん:2013/06/24(月) 15:28:43.64
int64_tが無いKUSOコンパイラなんだよきっと
別に規格違反ではない
162デフォルトの名無しさん:2013/06/24(月) 15:33:26.72
>>161
あんさんの使っているコンパイラーは何にょ?
163デフォルトの名無しさん:2013/06/24(月) 15:35:52.74
c++0xオプションつけてるのにstd::int64_tが
マクロで抑制されているとなると、
Windowsで32ビットバイナリの時は使えないとか?
164デフォルトの名無しさん:2013/06/24(月) 15:38:50.39
えっと、-m64でしたっけ・・・
つけてマンスリーよ
165デフォルトの名無しさん:2013/06/24(月) 15:45:58.64
>>164
お前、どうせ後で
「みなさんがいつ正解に辿り着くか試していました。バカばっかですね」
とか言うつもりだろ?
166デフォルトの名無しさん:2013/06/24(月) 15:47:21.58
馬鹿ばっかですね。
167デフォルトの名無しさん:2013/06/24(月) 15:50:43.52
>>165
それをいうのは俺の仕事だ 邪魔すんな
168デフォルトの名無しさん:2013/06/24(月) 18:40:26.30
>>154
馬鹿には使えないんです。諦めて下さい。
169デフォルトの名無しさん:2013/06/26(水) 05:05:43.88
最近C++の変数は初期化されるって言う人よく見るんだけど仕様何か変わったりしたの?
プリミティブ型は明示的にコンストラクタ呼ばないと初期化されないと思ってるんだけど
あとSTLで明示的にコンストラクタを呼ぶ呼ばないって規約あるの?
170デフォルトの名無しさん:2013/06/26(水) 05:22:29.12
どこでそんなアホな人間を見かけるんだ?
お前は毎日家畜小屋でもうろついているのか?
171デフォルトの名無しさん:2013/06/26(水) 07:09:00.19
STLってなんですか?
172デフォルトの名無しさん:2013/06/26(水) 07:12:23.33
スゲー
テクニカルな
ロコモーション
173154:2013/06/26(水) 10:05:42.59
stdint.hをincludeしたらint64_tが使えました。
cstdintではstd::をつけても使えません。
cstdintではなぜつかえないのですか?
教えてください。
174デフォルトの名無しさん:2013/06/26(水) 15:11:46.23
>>169
VC++のデバッグバージョンの話じゃないか?
175デフォルトの名無しさん:2013/06/26(水) 15:45:31.88
176デフォルトの名無しさん:2013/06/26(水) 21:39:15.78
>>169
int k;不定
int k();関数宣言
int k{};ゼロ
int k = {};ゼロ
177デフォルトの名無しさん:2013/06/26(水) 21:42:53.70
×初期化される
○初期化できる
178デフォルトの名無しさん:2013/06/26(水) 21:55:50.15
>>169
そういう奴はマルチユーザーOSではユーザーモードへからカーネルモードへのメモリ確保要求は0埋めして返すという暗黙のルールを知らずに勘違いした観測結果を見てる
179デフォルトの名無しさん:2013/06/26(水) 21:58:29.86
>>178
あ、カーネルの暗黙のルールとかどうでもいいです
ここはOSスレじゃなくて言語スレなんで
180デフォルトの名無しさん:2013/06/26(水) 22:04:28.53
>>179
「言語仕様的に考えて自動初期化なわけねーだろ馬鹿」
ってことだろ察しろよ
181デフォルトの名無しさん:2013/06/26(水) 22:08:02.81
>>179
言語理解能力のないバカ
182デフォルトの名無しさん:2013/06/26(水) 22:14:01.40
>>178=>>180=>>181
OSカーネルとかとんちんかんな
関係無い話を持ち出すなってことだよ
理解できないなんて残念な奴だなー
183デフォルトの名無しさん:2013/06/26(水) 22:31:31.54
言語仕様的に考えて自動初期化なわけねーだろ馬鹿
184デフォルトの名無しさん:2013/06/26(水) 22:47:56.74
じゃなんでvectorはゼロ初期化なん?
185デフォルトの名無しさん:2013/06/26(水) 22:52:37.46
コンストラクタがよばれるからだろアホ
186デフォルトの名無しさん:2013/06/26(水) 22:54:13.02
C++03はresize関数が初期値を必ず要求するから
デフォルト引数でゼロ初期化される

C++11はゼロ初期化されない
187デフォルトの名無しさん:2013/06/26(水) 22:56:28.17
>>186 んなこたーない。
188デフォルトの名無しさん:2013/06/26(水) 22:58:04.84
初期化のされ方が違うんじゃなかったっけ

03・・・デフォルトコンストラクタを増えた個数回呼び出す
11・・・デフォルトコンストラクタを1回呼び出し、それをコピーコンストラクタで広げる

ような感じだったような
189デフォルトの名無しさん:2013/06/26(水) 22:58:51.94
相変わらずきもい言語だな
190デフォルトの名無しさん:2013/06/26(水) 23:00:04.17
>>185,>>188
言語理解能力のない馬鹿
191デフォルトの名無しさん:2013/06/26(水) 23:01:02.76
>>190
規格票持ってんのか?ああ?
192デフォルトの名無しさん:2013/06/26(水) 23:06:13.41
>>188
違う
初期値指定付きのresizeは03も11も変わらない

03には本当の意味での初期値指定なしのresizeは存在せず、
一見初期値指定なしに見えるものはデフォルト引数が使われているだけ

11には本当に初期値指定指定なしのresizeが存在する
この場合は増えた要素をアロケータで初期化するのだけども
POD型では初期化されないようになっている
(もちろん初期化するようなアロケータを指定すれば初期化されるようにもできるが)
193デフォルトの名無しさん:2013/06/26(水) 23:21:11.04
>>192
いや、PODでも値初期化されるだろ。
194デフォルトの名無しさん:2013/06/26(水) 23:23:19.93
>>192
いくらなんでもそんな危険な変更が入るわけが無い。
195デフォルトの名無しさん:2013/06/26(水) 23:24:42.07
だよね
初期値指定なしのシグニチャのがPODをゼロ初期化しなかったら互換性ぶちこわしだもんね
196デフォルトの名無しさん:2013/06/26(水) 23:29:52.04
要するに、旧仕様だとuninitialized_fillを使わなきゃいけなかったのが
PODの場合memsetが使えるようになったというだけだろ
197デフォルトの名無しさん:2013/06/26(水) 23:33:37.65
コンストラクトごとに値が変わりコピーでは値が変化しないようなクラスでは互換性のない破壊的変更だったけどね
198デフォルトの名無しさん:2013/06/26(水) 23:36:11.32
本当だ、ゼロ初期化されたわ
あれ、昔試した時はそうならなかったような……
気のせいか
199デフォルトの名無しさん:2013/06/26(水) 23:38:39.45
クラスのインスタンスを作る時はスタックに置かず、常にnew/deleteしてるコードを見たんですが、
なんか理由があるんでしょうか。
200デフォルトの名無しさん:2013/06/26(水) 23:40:01.51
Java教かなにかに入ってるんじゃないですかね
201デフォルトの名無しさん:2013/06/26(水) 23:41:16.77
例外とか気にしないのかなと思う
202デフォルトの名無しさん:2013/06/26(水) 23:41:37.39
スマポで解決
203デフォルトの名無しさん:2013/06/26(水) 23:56:28.59
>>196
C++03でも値初期化されたPODによるuninitialized_fill()をmemset()に最適化することは可能だよ。
204デフォルトの名無しさん:2013/06/27(木) 00:00:22.80
教えてください。
std:string str;
strに8byte毎に16進数での追加の方法がわかりません
たとえば、char str2[50];
str2 = 0x61 のように入れたいです。
str.append('0x61'); のようにすると、コンパイルエラーが発生します。

おねがいします。
205デフォルトの名無しさん:2013/06/27(木) 00:09:14.97
>>204
> str2 = 0x61 のように入れたいです。

std::string 以前に、そんなことできないから。
やりたいことが何なのかさっぱり。
206デフォルトの名無しさん:2013/06/27(木) 00:09:16.92
.append('\x61')
207デフォルトの名無しさん:2013/06/27(木) 00:52:31.09
>>204の超訳:
「charをstringに変換したいです><」
208デフォルトの名無しさん:2013/06/27(木) 01:05:23.44
>>206
コンパイルエラーでできませんでした。
レスありがとうございました。

str.append(1,'\0');
str.append(1,0x61);

でコンパイル通りました。
お騒がせしました。
209デフォルトの名無しさん:2013/06/27(木) 01:09:12.68
push_backのほうがいい気がするけど
まあどうでもいいや
210デフォルトの名無しさん:2013/06/27(木) 01:14:50.84
>>204 の「8byte毎に」は何だったんだ・・・?
211デフォルトの名無しさん:2013/06/27(木) 01:18:02.15
8bit毎にの間違いでしょ
212デフォルトの名無しさん:2013/06/27(木) 01:37:17.07
ああなるほど
213デフォルトの名無しさん:2013/06/27(木) 03:27:27.34
169だけどこの話題出すといつも170-198みたいな流れになって誤解が多いのが分かる
未初期化のゼロを勘違いしやすいんだと思うけど
記憶が正しければ言語仕様は>>176でよくて、ライブラリに規約があるのかどうかが分からない

>>192
それって処理系の実装の話?仕様の話?

他にはpairのctorで初期化してるかどうかでmapの使い方変わるし
誰かおせーて
214デフォルトの名無しさん:2013/06/27(木) 08:11:25.42
>>213
コンテナ要素は Allocator テンプレート引数に応じて allocator_traits<Allocator>::construct
で構築される。 23.2.1 [container.requirements.general] p3

allocator_traits<allocator_type>::construct は可能 (well-formed) であれば
Allocator::construct を使う。 20.6.8.2 [allocator.traits.members] p5

デフォルトの std::allocator<T> について construct<U, ...>(U* p, ...) は
::new((void *)p) U(...) と規定されている。 20.6.9.1 [allocator.members] p12

引数なしなら ::new((void *)p) U() となり、 POD でも値初期化=ゼロ初期化される。
5.3.4 [expr.new] p15, 8.5 [dcl.init] p10,p7,p5
215デフォルトの名無しさん:2013/06/27(木) 12:13:06.33
<cstdint>をincludeしなくてもstd::int64_tがつかえるのはなぜですか?
216デフォルトの名無しさん:2013/06/27(木) 12:16:38.33
>>215
他のヘッダからインクルードされてるからだろう
そういうのは可搬性ないよ
217デフォルトの名無しさん:2013/06/27(木) 12:18:02.92
可搬性ないよの意味を教えてください。
218デフォルトの名無しさん:2013/06/27(木) 12:30:24.83
cstdintを必ずインクルードしないと動かない処理系があっても文句は言えないという意味
219デフォルトの名無しさん:2013/06/27(木) 12:34:43.10
くりくりー
ありがたまきん
220デフォルトの名無しさん:2013/06/27(木) 13:09:24.91
演算子のオーバーロードについて質問です。

class LongBit {
private:
//略
public:
//略
LongBit operator*(unsigned a);
//略
};

LongBit LongBit::operator*(unsigned a)
{
//略
}

こう書くとエラーになります(略の部分はちゃんと書いてます)。どうすればよろしいでしょうか?
221デフォルトの名無しさん:2013/06/27(木) 14:02:44.65
>>220
悪くないようだ他所で問題があるのでは?
http://codepad.org/GyGGpLck
222デフォルトの名無しさん:2013/06/27(木) 14:07:38.78
ごめん手抜きしてたね
http://codepad.org/iwKKyZFZ
223デフォルトの名無しさん:2013/06/27(木) 14:43:43.59
>>220
&がなくてconstがないので使い方に制限がある
224デフォルトの名無しさん:2013/06/27(木) 16:26:03.87
>>214
なるほど、デフォルトのアロケータがコンストラクタ呼ぶのか
pairの話に戻るけど、これ自身はコンテナではないからそのメンバはアロケータを経由しないわけだけどそれらの初期化についてはどう?
手元の処理系では概ね初期化してるようだけど
pair::pair() : first(), second() {}

というのもPODなら簡単だけどPODを持つ非PODが面倒で、そのコンストラクタで初期化してやらないとPODのゼロ初期化を呼べなくなるよね
struct A { A(){} int a; } a = A();
// uninitialized a.a
225デフォルトの名無しさん:2013/06/27(木) 19:11:05.30
何が言いたいかよくわからないが
pairのデフォルトコンストラクタはfirstおよびsecondを値初期化することになってる
226デフォルトの名無しさん:2013/06/27(木) 19:35:31.58
昔試した時は、初期化させないアロケータを自分で作った可能性がある
227デフォルトの名無しさん:2013/06/27(木) 21:17:45.10
>>220
本気で質問する気があるなら
エラーメッセージも書くか
エラーが再現する最低限のコードを
codepadかideoneに貼れksg
228デフォルトの名無しさん:2013/06/27(木) 22:19:46.44
しーぷらぷら
229デフォルトの名無しさん:2013/06/27(木) 22:21:37.17
マジキチぷらぷら丸
230デフォルトの名無しさん:2013/06/27(木) 22:42:57.76
>>224
少しは自分で規格読もうとしろよ。
231デフォルトの名無しさん:2013/06/28(金) 04:44:32.41
関数に付いてるconstがよくわからないんですが
232デフォルトの名無しさん:2013/06/28(金) 05:00:33.01
メンバ関数の方なら
その関数を呼んでもメンバ変数が変更されないことを表す
233KUSO KOTE:2013/06/28(金) 05:31:45.10
>>231
struct UNKO {
 bool fuck () const && {★}
 bool fuck2 () && {}
 int v;
} kuso;
星印に於いてthisがconst UNKO &&型となる。
考え方としてはconst UNKO && this = &kuso;
としてから呼び出している感じ。

なのでfuckの中ではthis->vは弄れないし、
fuckからfuck2の呼び出しは
UNKO && this(fuck2の) = this(fuckの);
としているようなものなので 呼び出せない。
static関数ではthisが無いのでconstは付けられない。
234KUSO KOTE:2013/06/28(金) 05:40:14.80
あ、&&が邪魔だった。読み飛ばして。
235デフォルトの名無しさん:2013/06/28(金) 05:54:24.63
つまりこういうこった
class X { void f() const && {} };
X x;
move(x).f();

 X 「const &&」 tmp = move(x);
 X const * const _this_ = &tmp;
236デフォルトの名無しさん:2013/06/28(金) 07:35:19.13
よく聞くPODって何なんだぜ?
237デフォルトの名無しさん:2013/06/28(金) 08:01:57.39
C時代の構造体
238デフォルトの名無しさん:2013/06/28(金) 08:27:01.89
そんだけなの?
構造体って言えばいいのに
239デフォルトの名無しさん:2013/06/28(金) 08:34:18.80
C  :構造体 = POD
C++:構造体 ⊇ POD
240デフォルトの名無しさん:2013/06/28(金) 08:38:46.32
ほぅ、ではC++の構造体というのが
規格の何ページ目で定義されるのか
伺おうか
241デフォルトの名無しさん:2013/06/28(金) 09:24:32.62
ページ数とかムズいな。
242デフォルトの名無しさん:2013/06/28(金) 11:37:19.95
いまどきページ数固定の本で調べてるってのがね。
243デフォルトの名無しさん:2013/06/28(金) 12:11:10.86
PDFでもページ番号打ってるな
JIS X3014:2003なら122ページ
ISO/IEC 14882:2011は中見てないけど218ページくらいかな
244デフォルトの名無しさん:2013/06/28(金) 12:34:16.40
PODは構造体のことじゃなくて(細かい規定は抜きにすると)C時代のデータ型のことで
intとかcharもPODだよ
245デフォルトの名無しさん:2013/06/28(金) 13:43:02.68
コピーできる値がPODで
そのままコピー出来ない参照(配列・ポインタ)と区別するための言葉
246デフォルトの名無しさん:2013/06/28(金) 17:02:25.24
構造体の中にポインタとか配列があったらPODじゃなくなるん?
初耳だな
247デフォルトの名無しさん:2013/06/28(金) 18:13:21.13
非PODのポインタや配列があったら非PODになりそうな気がする
規格は読んでない
248デフォルトの名無しさん:2013/06/28(金) 19:10:56.54
>>243
テキトーなこと言うなよ
書いてねーぞ
249デフォルトの名無しさん:2013/06/28(金) 20:02:25.94
9 [class] p8,10 でそれぞれ stadard-layout struct と POD struct が定義されている。
いずれも 〜 class から 〜 union を除いたものとされる。

ページ番号は 217 でいいのかな?
250デフォルトの名無しさん:2013/06/28(金) 22:04:04.06
>>249
で、構造体(structure)の定義はどこ?
251デフォルトの名無しさん:2013/06/28(金) 22:19:19.05
用語として structure の定義は無いよ。
252デフォルトの名無しさん:2013/06/28(金) 22:37:26.14
C++11で消えちゃったもんね
253デフォルトの名無しさん:2013/06/29(土) 05:01:54.90
激おこプンプン丸
マジキチぷらぷら丸
254デフォルトの名無しさん:2013/06/29(土) 15:03:47.60
激(ハゲ)おこプンプン丸
マジキチ ストラップ先生
255デフォルトの名無しさん:2013/06/29(土) 17:23:46.13
関数化を検討する目安教えて
短い関数書いたらそれはおかしいって言われて困惑してる
256デフォルトの名無しさん:2013/06/29(土) 17:49:41.69
>>255
無視しろ
257デフォルトの名無しさん:2013/06/29(土) 17:55:29.54
短い関数を否定するなら swap も全滅だな
258デフォルトの名無しさん:2013/06/29(土) 18:02:36.95
>>255
長い関数とかそれこそどこかに無駄があると考えるのが自然であって……
259デフォルトの名無しさん:2013/06/29(土) 18:06:22.25
>>255
おかしいって言う方がおかしい。
今時の環境だと関数呼び出しのコストなんて微々たるもんだし、最近のコンパイラなら
よしなにインライン化してくれるからノーコストな場合も多い。

そもそも、最近は制御文の一切合切まで全部関数化されてて、メインのフローがauto
と関数呼び出しの羅列とかでもアリってことになってんだろ?
個人的にはかなり奇異に見えるんだが、それに異議を申し立てると老害呼ばわりされ
そうでジッと息を潜めてるw
260デフォルトの名無しさん:2013/06/29(土) 18:07:45.96
inlineもループが含まれているとインラインのメリットが打ち消されるとして
インライン化しないコンパイラが多いな
261デフォルトの名無しさん:2013/06/29(土) 18:14:16.58
関数毎にドキュメントを書かされるジョブがあって、
それがとても面倒臭いとみんな考えていた。
1000行を超える関数がいくつもあった。
262デフォルトの名無しさん:2013/06/29(土) 18:15:53.73
>>255
意味的に完結できる単位であれば、小さければ小さいほどいい

…て、死んだじっちゃんが言ってた
263デフォルトの名無しさん:2013/06/29(土) 18:23:05.74
インライン化されない方が速い、コストがかからないのが普通。
大規模なコードを読み込むとキャッシュから前のが追い出される。
なんども使う部分がCPUキャッシュに乗りっぱなしが速い。
264デフォルトの名無しさん:2013/06/29(土) 18:30:23.18
インライン展開 - Wikipedia 
欠点
インライン展開は性能を悪化させるような問題もいくつか存在する。
コードサイズの増加によって、コードによってはキャッシュメモリに収まらなくなる場合があり、キャッシュミスによる性能低下を引き起こす。
インライン展開された部分で使う変数が加わることでレジスタの消費が増えると、場合によってはレジスタが足りなくなり、新たなメモリアクセスが増えてしまう。
コードサイズが大きくなりすぎると、メモリサイズなどのリソース限界を超えてしまうことがあり、動作不能になったり、スラッシングを起こしたりする。



欠点も存在します。例えば、巨大な関数を inline 展開してもコードサイズの肥大化を招き、
プログラム自体がキャッシュミスしてしまう可能性が高くなります。
また、巨大でなくても色々な所から呼び出されている関数をインライン展開してしまうと、
呼出毎に関数のコピーが出来てしまい、これもコードサイズの肥大化を招きます。
http://myoga.web.fc2.com/prog/cpp/opti03.htm
265デフォルトの名無しさん:2013/06/29(土) 18:35:06.04
CPU とキャッシュのはなし

メインメモリは遅い
CPU からメインメモリにデータを読みに行く場合、これはとにかく遅い。
例えばレジスタにあるデータを読みに行く場合と比べると、だいたい数倍から数100倍の遅さ。

キャッシュライン
CPU がメインメモリからデータを読み出すとき、必ず小さなメモリチャンクをキャッシュ上にロードする。
ロード単位はプロセッサによるけど、だいたい 8 〜 512 バイト。
アクセス対象のデータが既にキャッシュに載ってる場合は、メインメモリじゃなくてキャッシュを読みに行く。

ない場合はメインメモリにアクセスするけど、そのデータはもしかしたら既にキャッシュラインに載って
キャッシュに読み込まれてる途中かもしれないから、いまのキャッシュラインがロードされるのを待って、
欲しいデータがキャッシュに載らなかったのを確認してから、改めて欲しいデータをキャッシュラインに載せる。
これがキャッシュミスヒット。遅い。

L1 Cache と L2 Cache
ふつうキャッシュは 2 種類ある。すぐ近くにある L1(Level 1)Cache と、ちょっと遠くにある L2(Level 2)Cache の 2 つ。
CPU はまず L1 にアクセスしにいく。L1 になかったら L2 にアクセスして、みつけたら読み込んで L1 に保存する。
L2 にもなかったらメインメモリにアクセスして、読み込んでから L2 と L1 に保存する。

インライン化はよく吟味して使う。コードがでかくなってキャッシュに載り切らなくなるから。
インライン化したら遅くなったなんてのはよくある話。最適化するならまず計測から。計測できなかったら最適化しないぐらいの勢いで。
http://graphics.hatenablog.com/entry/2012/03/23/175113
266デフォルトの名無しさん:2013/06/29(土) 18:43:31.91
あれれ? 直列だったっけ?? 俺の記憶違いかなあ
267デフォルトの名無しさん:2013/06/29(土) 19:36:34.71
>数100倍の遅さ
たかがメインメモリの8バイト程度のロードに
CPUクロック500Hz相当以上かかると言っている?
268デフォルトの名無しさん:2013/06/29(土) 19:44:26.26
ソースにWikipediaを持ってくるゴミってまだ生き残ってるのか
ゴキブリみたい
269デフォルトの名無しさん:2013/06/29(土) 19:45:40.14
自作には疎いけどメモリモジュールにも動作周波数がついてることは知ってる
270マイク ◆gZ6OoOjBU6 :2013/06/29(土) 20:12:00.31
test
271デフォルトの名無しさん:2013/06/30(日) 10:50:34.65
短いほど良いというが関数にする意味がたいしてない事までいちいち関数にすると
同僚がいちいちドキュメントを読まなきゃならなくなるから嫌われるよ
例えばタイピングを楽にするための短いラッパーや例外を隠蔽するだけのラッパーなど
ラップされるクラスや関数がチームメンバーにとって既知ならこの関数があるせいで
ドキュメント作成からドキュメントをメンバー全員が読むまでの手間が増える
これは人件費に換算したら意外とバカにできないコストになる
したがって短い関数は関数にせずクライアントコードに直接書いたほうが会社に貢献できる
272デフォルトの名無しさん:2013/06/30(日) 10:52:16.22
いえ全然
273デフォルトの名無しさん:2013/06/30(日) 11:10:44.59
shared_ptr<IFoo> CreateFoo() {
try {
shared_ptr<IFooFactory> factory = GetFooFactory();
return factory.create();
} catch(...) {
return shared_ptr<IFoo>();
}

これはダメな例ね
こういった意味のない処理を関数にするのは良くない習慣だ
自分が少しタイピングを楽したいだけなのに周りにドキュメント読む手間を取らせて迷惑かけないで欲しい
274デフォルトの名無しさん:2013/06/30(日) 13:08:37.35
ドキュメント作成、ドキュメント読みなんて行為自体が時間の無駄
275デフォルトの名無しさん:2013/06/30(日) 14:35:30.28
>>271
普通は繰り返し使う方向に持っていく
学習効果が出てくるのでトータルで見れば、ソフト自体の安定性も上がるし、読み合わせの時間も短くなる

ただ、この方法の唯一の欠点は、末端の請負担当のみの力では実現できない可能性が高いこと
そうだとすると、>>271 のような常にその場一回限りのド○タ開発的発想の方が楽だろう事は否定できない
276デフォルトの名無しさん:2013/06/30(日) 15:45:51.77
>>274
俺もそう思う。
そうは言うても、雇われの立場では仕方ないこともあるでの。
277デフォルトの名無しさん:2013/06/30(日) 20:43:53.45
自作の引数を取るマニピュレータを作りたいのですが、なかなかぐぐってもいいのが見つかりません

VS2012では_Smanipというマクロを使いますが、使わずに自作したいのですが
278デフォルトの名無しさん:2013/06/30(日) 20:45:19.96
>>273
意味の無いどころか、エラーを握りつぶして使えないインスタンス返すとか、
邪悪なコードにしか見えない。関数化の話と関係なしにアウトだろ。
279デフォルトの名無しさん:2013/06/30(日) 20:46:16.10
お前の頭があうと
280デフォルトの名無しさん:2013/06/30(日) 20:46:43.71
なんでも関数にしないやつはアウト
281デフォルトの名無しさん:2013/06/30(日) 23:30:11.27
>>277
・状態を持つクラス
・引数に応じた状態でそのクラスを作成して返す関数
・ストリームとそのクラスに対してオーバーロードされたoperator>>,operator<<
を定義すれば良い
282デフォルトの名無しさん:2013/06/30(日) 23:34:05.62
コンストラクタでいいのか関数いらんな
283デフォルトの名無しさん:2013/07/01(月) 07:36:37.44
クラスがポインタをメンバ変数に持ってるとき、constが実体にも伝播して欲しい場合がある
そういう定義があっていいと思うんだ
284デフォルトの名無しさん:2013/07/01(月) 08:16:05.31
ポインタがハンドルになっただけでボロが出る
285デフォルトの名無しさん:2013/07/01(月) 10:25:53.02
出てもいいだろ、const_castやmutableと同じアビューズなんだから
真っ当に書いてもpimplの可読性がひどいのは頂けない
286デフォルトの名無しさん:2013/07/01(月) 22:42:15.56
>>283,285
http://www.google.co.jp/search?q=pimpl_ptr
好きなの使えよ。
287デフォルトの名無しさん:2013/07/03(水) 13:45:31.67
ゲーム制作中のエラーなのですが、相談させてください。開発環境はvisualstudio2010です。

さっきまで問題無く動いていたプログラムなんですが
自分があるクラスのプログラムにlist操作を加えたところ
いきなり、エラーが数百発生しました(800以上。

問題はこのエラーで、どれも、
構文エラー;';'が'}'の前にありません
構文エラー;'>'
'(クラス名)':定義されていない識別子です。
直前のエラーを修復できません。コンパイルを中止します
'(クラス名)':識別子がクラス名でも名前空間名でもありません。

などと、自分にとって目視で確認出来るエラーばかりで
目視上では、問題無いものばかりです。
ポイントは、いきなり数百ものエラーが発生する、
listやvectorを組み込むとたまに出る、
数百の大部分はこのようなエラー文です↓
「エラー 490 error C2143: 構文エラー : ';' が '}' の前にありません。 c:\program files\microsoft visual studio 10.0\vc\include\vector 176

頻繁に出るわけじゃないですが
前回このエラーが出た時は、四苦八苦しつつもプログラムを打ち直してたら
なにかの拍子に正常にビルド出来るようになりましたが、原因は未だに理解出来ずにいます。

で、今まさにこのエラーが出ている状態で困っております。、
今後の為にも対処法というか、原因を知っておきたいのもありますし、、
一体、考えられる問題はなんでしょうか?経験のある方、わかる方、教えて下さい。
288デフォルトの名無しさん:2013/07/03(水) 13:48:57.50
定義から宣言が見えないんだろ
289デフォルトの名無しさん:2013/07/03(水) 13:55:50.69
現象を再現できる最小のソースを貼ってくれ
290デフォルトの名無しさん:2013/07/03(水) 14:05:17.64
要領を得ない説明をダラダラ重ねるよりソースを貼るべき

むしろ説明すべきなのは↓だ
・勉強し始めて1ヶ月未満
・コロンとセミコロンの区別もつかない
・入門書もろくに読んでなくていきなりコピペ改造をやろうとしてる
291デフォルトの名無しさん:2013/07/03(水) 14:24:54.11
初心者ではありますが、一年ほどの勉強を経ています。
不細工ながら、ゲームを仕上げたこともあります。コピペ改造ではありません。
ソースを貼りたいところですが、すでにクラスも10以上だし
各部分もそれなりに量があり、原因がわからないのでどこを張り付ければいいのかわかりません。。。

listやvectorを多用しているのですが、
さっきまでは動いていたので、追加したlistを消してみたのです。ですが、なんとエラーの数は減ったのですが
ビルド出来る状態に戻りませんでした。動いてたはずの状態に戻したのにです。
ちょっとわけがわかりません。

>>288
詳しく教えて頂けませんか?
あなたのおっしゃる通り、ひとつのclassがまるごと認識してない感じのエラーなんですが
どう考えても宣言は出来ているはずなのです
vectorやlistを多用しておりますが、どれもシングルトンで制作しており、実体化はCPPの方で定石である
class名* class名::getInstance()
{
if(instance==0){
instance = new class名();}
return instance;
}

class名* class名::instance = new class名();

と記載して、実体化しております。
というか、これで動いてたので、記載には問題が無いはずなのです、、

インクルードの重複も考えましたが、各hファイルには必ず
#pragma onceをつけているのでclassの再定義はおかしいはずです、、、、
292片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/03(水) 14:33:18.71
>>291 ZIPで圧縮してアップローダーにあげてみよ
293デフォルトの名無しさん:2013/07/03(水) 14:33:23.86
>>291
エスパーでも分からんわw

>なんとエラーの数は減ったのですが
>ビルド出来る状態に戻りませんでした。
とりあえずバックアップしてあるコードの中から
正常に動作する最新のコードを引っ張り出して
もう1回そこから組むしかないんじゃないか?
それで今度はこまめにビルドして、エラーが出たら質問に来い。
294デフォルトの名無しさん:2013/07/03(水) 14:45:26.93
>>291
gitやsubversion使えよ
295デフォルトの名無しさん:2013/07/03(水) 14:45:36.76
>>293
class型の再定義というエラーが原因?なのでしょうか、
そのclassを利用している他のクラスでは認識できない型が使われている、との
エラーが出ています。
しかし、再定義ミスをしないように、#pragma onceはつけていますし、
シングルトンなので宣言自体はひとつしか記載していないはずです。

それ以外に、再定義するポカをやってるケースを教えて頂けないでしょうか?
296デフォルトの名無しさん:2013/07/03(水) 14:50:32.59
vc10のvectorの176行目だとoperator+か
変なクラス作ってるのまではわかる
297デフォルトの名無しさん:2013/07/03(水) 14:59:46.36
>>295
インクルードの順番あってるか?
298デフォルトの名無しさん:2013/07/03(水) 15:00:38.01
すみません、各ヘッダファイルにて
#includeする順番とか、#pragma onceの位置とか
気にする必要ありますか?
必要なものを無造作に羅列してるだけなんですけども。
299デフォルトの名無しさん:2013/07/03(水) 15:11:36.59
>>297
期待したのですが、どうやらインクルードの順番は問題無いようです。
(順番を変えてもエラーに変化ありません
300デフォルトの名無しさん:2013/07/03(水) 15:12:45.06
>>298
#includeする順番はめちゃくちゃ重要
301デフォルトの名無しさん:2013/07/03(水) 15:20:28.06
>>299
インクルードしたファイルの中でインクルードの順番あってるか?
302デフォルトの名無しさん:2013/07/03(水) 16:03:57.78
>>301
あなたのインクルードのご指摘のおかげで解決出来ました。
手違いで双方向状態でインクルードさせていたみたいです。
こんなエラーになるとは思いませんでした。
ありがとうございます
303デフォルトの名無しさん:2013/07/03(水) 22:05:39.49
includeの順番に強く依存するライブラリは糞。
だいたい必用なら自分でincludeしろっての。
順番守らないといけないとか、低脳のも程がある。
304デフォルトの名無しさん:2013/07/03(水) 22:14:06.47
vc++でstdafx.hに何でも放り込んでるとinclude不足のライブラリ書いてしまうことがある
305デフォルトの名無しさん:2013/07/03(水) 22:26:43.94
>#pragma onceの位置とか

先頭以外あり得ないだろう
何を言っているんだ>>298
306デフォルトの名無しさん:2013/07/03(水) 23:02:58.13
>定石であるclass名* class名::getInstance()

勇気あるな
俺だったら例外安全が気になってナマポは無理
307デフォルトの名無しさん:2013/07/04(木) 20:37:02.57
今二次元ベクトルを扱うクラスを作って見てるんだけど
演算子のオーバーロードで引数に中括弧ってどうやって使うのだろうか
配列の初期化みたいな感じで代入して見たいんだけど
308デフォルトの名無しさん:2013/07/04(木) 22:11:38.70
無理
309デフォルトの名無しさん:2013/07/04(木) 22:13:49.86
std::initializer_list
310デフォルトの名無しさん:2013/07/04(木) 22:16:49.44
>>309
initializer_listを使用したサンプルを
拝見させて貰おうか
初期化じゃなくて代入で
311デフォルトの名無しさん:2013/07/04(木) 22:19:24.74
11なら代入演算子系では使える
ttp://ideone.com/9XzwYY
それ以外では無理
312デフォルトの名無しさん:2013/07/04(木) 23:35:00.03
>>307
中括弧は演算子なのか?
313デフォルトの名無しさん:2013/07/04(木) 23:55:53.43
つうか、中括弧て普通 {} の事だよな?
314デフォルトの名無しさん:2013/07/05(金) 01:11:02.23
じゃあ 梅かっこ竹かっこ松たかこで
315デフォルトの名無しさん:2013/07/05(金) 01:19:48.82
>>314 1ニヤリ
316デフォルトの名無しさん:2013/07/05(金) 01:43:51.30
>>314
ドサクサに紛れて何意味のわからねえ事言ってんだよ
…おもしれえじゃねーか
317デフォルトの名無しさん:2013/07/05(金) 02:00:13.67
[] だいかっこ
{} ちゅうかっこ/ブレイス
() しょうかっこ/パーレソ
<> あんぐるぶらけっと

まるかっこ()、やまかっこ<>というやつはジジイ、
かぎかっこ[]は殺害、
カーリー{}は変態、にょろかっこはhoge厨
318デフォルトの名無しさん:2013/07/05(金) 02:12:02.29
二次元ペドを扱う、に見えた
319デフォルトの名無しさん:2013/07/05(金) 02:23:54.29
>>317
[]はスクウェアブラケットじゃなかったっけ?
320デフォルトの名無しさん:2013/07/05(金) 02:29:26.95
( カッコ
) コッカ
321デフォルトの名無しさん:2013/07/05(金) 02:40:08.20
if と fi を思い出した。
322デフォルトの名無しさん:2013/07/05(金) 03:11:38.28
(小括弧,丸括弧,parentheses)
{中括弧,波括弧,curly bracket}
[大括弧,角括弧,square bracket]
<不等号(より小),不等号(より大),less-than sign,greater-than sign>

だってそれJISX0213やISO/IEC10646で言われてるから
しかし大中小括弧の名称はあまり使わないほうがいい模様
323デフォルトの名無しさん:2013/07/05(金) 05:51:11.50
<x|Q|y>
324デフォルトの名無しさん:2013/07/05(金) 08:02:06.77
322は老害JIS信者。
「句点はカンマだ、とか
Zはゼットでなくゼッドまたはズィーで
お前ら全員アホ」
とのまたうレベル。
325デフォルトの名無しさん:2013/07/05(金) 08:16:38.41
>>324
え、「正式名称」の話題じゃないの?
[], {}, () は普通に大・中・小カッコと認識していたが

<> はって? >>317で初めて読み方知ったよ……
326デフォルトの名無しさん:2013/07/05(金) 08:53:17.03
シェブロンだろアングルブラケットとか長いし
327デフォルトの名無しさん:2013/07/05(金) 08:57:59.21
>>325
何の正式名称だよ
iso646は2chに関係ないだろ
328デフォルトの名無しさん:2013/07/05(金) 10:15:13.15
>2chに関係ない
馬鹿
329デフォルトの名無しさん:2013/07/05(金) 12:11:55.59
( wax
) wane
[ U turn
] U turn back
{ embrace
} blacelet
< angle
> right angle
330デフォルトの名無しさん:2013/07/05(金) 12:40:56.61
少なくとも2.3 Charactersetsによると
C++のソースコードの文字は
ISO/IEC 10646とは微妙に違うよね
331デフォルトの名無しさん:2013/07/05(金) 12:43:06.57
括弧とは違うけど、~ を にょろ と読む奴は
hoge並に不愉快だ。
332デフォルトの名無しさん:2013/07/05(金) 12:44:53.43
質問させてください。フレーム制御についてなんですが、
五枚の画像をじゅんぐりに表示する(アニメさせる)のに自分はこう考えてます。

if(this->count % 5 == 0){画像1の描画処理}
if(this->count % 5 == 1){画像2の描画処理}
if(this->count % 5 == 2){画像3の描画処理}
if(this->count % 5 == 3){画像4の描画処理}
if(this->count % 5 == 4){画像5の描画処理}

しかし、これではものすごいスピードのアニメになってしまいますよね?
一枚一枚の表示時間を長くしたいわけです。
で、自分はそうしたい場合、countを細分化してわざわざ同じ画像を振り分けています
例↓
if(this->count % 10 == 0){画像1の描画処理}
if(this->count % 10 == 1){画像1の描画処理}
if(this->count % 10 == 3){画像2の描画処理}
if(this->count % 10 == 4){画像2の描画処理}
        …以下同じ要領で書き連ねる

賢い方ならわかると思いますが非常に非効率ですよね、、
どうやればスマートな命令になりますか?
知恵をお貸しください。
333デフォルトの名無しさん:2013/07/05(金) 12:48:52.30
どう考えても{画像*の描画処理}はまとめられるだろ…
334デフォルトの名無しさん:2013/07/05(金) 12:49:13.88
フレームって何ですか?
335デフォルトの名無しさん:2013/07/05(金) 12:51:14.14
(count/100)%10 == 1
336デフォルトの名無しさん:2013/07/05(金) 12:53:27.78
フレーム数をハードコーディングとかやめとけって
337デフォルトの名無しさん:2013/07/05(金) 13:19:04.58
>>336
では、あなたならこうする場合どうするんですか?

>>335
その方法もわかるんですが、結局似たような感じで羅列しませんか?
338デフォルトの名無しさん:2013/07/05(金) 13:43:34.93
>>332
1. 分岐毎にいちいち割り算するな。一回で済ませられるだろ。
2. switch使え
3. ていうか画像を順番に表示するだけなら配列につっこんで置いてインデックスでアクセスすればいいだろ
339デフォルトの名無しさん:2013/07/05(金) 13:43:44.80
>>337
タイマーイベントと組み合わせたアニメーションループのようなクラスなり関数なりをまず書くだろうな。
画像は適当な配列構造にでも突っ込んどいて、インデックスを指定して取得する。
340デフォルトの名無しさん:2013/07/05(金) 13:56:06.86
>>338
もう少しヒントお願いします。
ちなみに配列に入ってますが29〜38までの10枚で
それを順番に表示させたいのです

a=( count / 60 ) % 10;
switch(a){
case 0:

case 1

な風に、switchを使いましたが、やはり、おかしくなります。
タイミングを遅くするところが想像しづらいです。

>>339
アニメのためにクラスを作るのはちょっと
341デフォルトの名無しさん:2013/07/05(金) 14:08:21.10
>>331
ニョロモに進化するぞ?
342デフォルトの名無しさん:2013/07/05(金) 14:10:49.57
>>340
aに29足せやw
一定間隔で切り替えたいならタイマーイベント使うなりスピンウェイトするなりすればいい。
343デフォルトの名無しさん:2013/07/05(金) 15:04:10.43
>>342
>一定間隔で切り替えたい

これを叶えるためには、やはりタイマーを使わないとダメですか?
スピンウェイトは使いたくないです
344デフォルトの名無しさん:2013/07/05(金) 16:24:18.25
>>337
んなこたーない
345デフォルトの名無しさん:2013/07/05(金) 18:11:30.64
>>343
>>タイミングを遅くするところが想像しづらい
とりあえず自分の興味のある数値を定数なりで定義するところから始めたら?

const int total_frame ??= 600; // アニメーションに必要な総フレーム数
const int image_start ??= 29; ??// アニメーション開始画像のインデックス
const int image_count = 10; // アニメーションのコマ数
const int animation_interval =??
 total_frame / image_count; //ひとコマ辺りのフレーム数??

Image* imageList[] = { ... };

void draw(){
 // 現在表示すべき画像のインデックスを求める。
 int index = (this.frame_count / animation_interval) % image_count;
 draw_image( imageList[image_start + index] );
}
346デフォルトの名無しさん:2013/07/05(金) 18:25:57.11
>>332
countはどのようにカウントアップされるの?
タイマーイベントじゃないの
347デフォルトの名無しさん:2013/07/05(金) 19:05:51.37
もはやC++とは何の関係もない件
348デフォルトの名無しさん:2013/07/05(金) 19:18:06.33
>>347
this.でがちがちのC++の件だよ
349デフォルトの名無しさん:2013/07/05(金) 19:26:15.30
こいつ最高にアホ
350デフォルトの名無しさん:2013/07/05(金) 19:26:55.61
this.なんてC++にはないなあ
どっか行けよカス
351デフォルトの名無しさん:2013/07/05(金) 19:38:16.33
>>350
コピペミスした
352デフォルトの名無しさん:2013/07/05(金) 21:17:25.79
おっ自演か
353デフォルトの名無しさん:2013/07/05(金) 21:38:52.63
Cを一通りやってC++に移行するとしたらどの本がオススメ?
354デフォルトの名無しさん:2013/07/05(金) 21:39:39.80
ロベール
355デフォルトの名無しさん:2013/07/05(金) 21:41:25.14
>>353
規格書
356デフォルトの名無しさん:2013/07/05(金) 21:43:00.81
355=キチガイ
357デフォルトの名無しさん:2013/07/05(金) 22:02:08.78
>>353
禿4
358デフォルトの名無しさん:2013/07/05(金) 22:22:06.06
>>353
最近はもう別言語
目的によるけどLL言語の方が入門書やオンラインマニュアルが充実してるのでおすすめ
C++は言語仕様が多いので一通り使えるようになるまでが非常に長い
359デフォルトの名無しさん:2013/07/05(金) 23:00:42.79
そうだよなあ…でもCを一通りやった方がC++を有効に使えそうだが

適当な入門書を読んだら「入門書の次に読む本」がオススメ
360デフォルトの名無しさん:2013/07/05(金) 23:02:14.51
簡単なツールならCでササッと作ってしまう
C++だと参考書みないと覚えてられない事が多すぎる

しかし大規模なプログラムになるとCは辛すぎ

目的に応じて使い分けだな
361デフォルトの名無しさん:2013/07/05(金) 23:02:26.23
ハゲの本だけは読まない方がいい
362デフォルトの名無しさん:2013/07/05(金) 23:09:53.83
そうか?
俺は禿本こそC++の真髄だと思うがな。
と言ってもD&Eしか読んだこと無いんだが、背景を知ると理解が深まる。
363デフォルトの名無しさん:2013/07/05(金) 23:10:58.64
class IV SKINHEAD product
364デフォルトの名無しさん:2013/07/06(土) 00:48:00.38
hoge先生、C++11対応の本出したんだよな
これがいまのマス書き本
365デフォルトの名無しさん:2013/07/06(土) 01:30:53.50
プログラミング言語C++ 第4版はいつ翻訳されるんや
366デフォルトの名無しさん:2013/07/06(土) 02:36:34.61
説明などでhogeを使ってる書籍だけは絶対買わないほうがよい
hoge使ってる書籍は内容も腐ってる

hogeが使ってあれば例外なく悪本
367デフォルトの名無しさん:2013/07/06(土) 22:22:07.64
メンバ関数の実装をクラスの定義と一緒に(ヘッダに)書くと、
inlineとしなくても暗黙的にインライン関数になるというのは本当ですか?
368デフォルトの名無しさん:2013/07/06(土) 22:26:28.93
暗黙的にインライン関数になるけど、実際インライン展開されるかどうかは知らん
369デフォルトの名無しさん:2013/07/06(土) 22:30:48.18
ということは、全部ヘッダに書いているテンプレートクラスのメンバ関数も、
インライン展開されているかもしれないということでしょうか。
もしそうなら、テンプレートクラスのメンバ関数をインライン展開しない方法はありますか。
370デフォルトの名無しさん:2013/07/06(土) 22:38:11.97
インライン展開を完全に抑止できるかはコンパイラによるとしか言えないだろうな
371デフォルトの名無しさん:2013/07/06(土) 22:38:30.37
>>369
まずC++第2版のexportに対応したコンパイラを用意します
372デフォルトの名無しさん:2013/07/06(土) 23:08:54.55
>>369
仮想化して派生クラスを隠蔽
373デフォルトの名無しさん:2013/07/06(土) 23:13:53.17
>>372はスルーでおなしゃす
374デフォルトの名無しさん:2013/07/06(土) 23:21:42.40
__declspec(noinline)
375デフォルトの名無しさん:2013/07/06(土) 23:23:59.78
>>367,369
ヘッダにかどうかは関係なくメンバ関数の定義をクラス定義の中に書くと暗黙的にinlineが付いてるものとみなされる
クラステンプレートの場合も同じ

template<class T> struct X { void func() {} }; // funcは暗黙のinline

template<class T> struct Y { void func(); }; // funcは宣言だけだからinlineではない
template<class T> void Y<T>::func() {} // 定義。明示的に指定しなければinlineではない

inline指定の有無にどの程度の意味があるかは他のレスのとおり
376デフォルトの名無しさん:2013/07/06(土) 23:26:59.43
>375
質問者が知りたいのは言語仕様上の分類が
インライン関数かどうかでなくて、
インライン展開されない方法だと思うのだが
377デフォルトの名無しさん:2013/07/06(土) 23:31:48.08
>>373
は?
唯一かつ確実な方法だぞ?
378デフォルトの名無しさん:2013/07/06(土) 23:45:03.60
aCCなら#pragma NOINLINE
379デフォルトの名無しさん:2013/07/07(日) 00:01:47.08
>>376
それは正しいが公開の場での質問は質問者だけのものじゃない
質問の本題や質問者の意向とは無関係なところでも見過ごせない間違いや誤解を生みそうな表現があれば指摘・修正があったほうがいい
380デフォルトの名無しさん:2013/07/07(日) 02:22:20.36
xlCならnoinline属性
381デフォルトの名無しさん:2013/07/07(日) 06:26:38.87
質問がいつも不明瞭だから答えるほうも困るよな
質問記述言語とか作るべきじゃないか
382デフォルトの名無しさん:2013/07/07(日) 07:24:48.44
>>377
よくわからないのだけれど
例を教えて
template<typename T, typename U>
class unko {
public:
  T fun(U u) {インライン展開しないで}
};
383デフォルトの名無しさん:2013/07/07(日) 16:14:06.46
>>381
とりあえず動かない系の質問は
「問題を再現する最小限のコード」だな。
これ以上1文字も削れないと言うところまで
削っているとたいていは事故解決するけど。
384デフォルトの名無しさん:2013/07/08(月) 03:32:33.34
>>377
唯一ではないし確実でもない
リンカによる最適化だってありえる
385デフォルトの名無しさん:2013/07/08(月) 22:23:41.34
 スレッド生成とオーバーライドに関して質問です。
 CreateThread関数の第三引数、lpStartAddressには関数のアドレスをぶちこむめばいいと思うんだけど、
オーバーライドされてる関数の場合、どうやって関数のアドレスを取ってくればよいのでしょうか。

 例えば、
 基底クラスArithのarithmetic仮想関数を、Arithを継承する子クラスAddにおいてオーバライドする場合。

int main(void)
{
Arith* = new Add;
Arith -> arithmetic();
}

 ここで呼び出してるarithmeticのアドレスをlpStartAddressにいれてスレッドを起動させたいのですが。
386デフォルトの名無しさん:2013/07/08(月) 23:07:15.25
lpParameterにArith*を突っ込んでlpStartAddressにarithmeticを呼び出すラッパーを指定する
387KUSO KOTE:2013/07/08(月) 23:11:22.97
388デフォルトの名無しさん:2013/07/08(月) 23:18:11.74
ぶち込む

随分と言葉遣いが汚いな
389デフォルトの名無しさん:2013/07/08(月) 23:54:06.16
>>387
よくわかった。ありがとう
390デフォルトの名無しさん:2013/07/09(火) 00:39:25.47
>>388
ドカタにとっては普通の言葉
391デフォルトの名無しさん:2013/07/09(火) 00:56:57.20
>>388
言うほどかね?
392デフォルトの名無しさん:2013/07/09(火) 01:08:15.48
育ちの悪いksは感覚が麻痺してるから分からないんだろうな。

哀れ。
393デフォルトの名無しさん:2013/07/09(火) 01:26:05.18
>>388
俺そんな言葉しらなかった。
へー、汚い言葉なのか。
394デフォルトの名無しさん:2013/07/09(火) 03:20:58.15
通じるし言いたくなるけどまあ汚い言葉だよな
395デフォルトの名無しさん:2013/07/09(火) 04:00:01.09
file-name.cpp
file_name.cpp
どっちが推奨なんでしょうか
396デフォルトの名無しさん:2013/07/09(火) 04:16:55.86
ノートPCの日本語キーボードが英語キーボードに誤認識された時に
入力不可能になる "_"よりも"-"をできるだけ使いたい
しかしc++では"_"みかける事多い
397デフォルトの名無しさん:2013/07/09(火) 04:44:49.02
ファイル名にはどっちもいらん
398デフォルトの名無しさん:2013/07/09(火) 06:16:19.25
Filenames should be all lowercase and can include underscores (_) or dashes (-). Follow the convention that your project uses. If there is no consistent local pattern to follow, prefer "_".
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=File_Names#File_Names
399デフォルトの名無しさん:2013/07/09(火) 07:31:45.58
ファイル名にはドットをつかえ
hello.world.hpp

namespace hello { class world { ... } ; }
400デフォルトの名無しさん:2013/07/09(火) 08:12:10.67
>>399
それはそれで二重拡張子で怒られるんで……
キャメルケース? でもWindowsでは大文字小文字区別しないからな……
401デフォルトの名無しさん:2013/07/09(火) 08:33:27.75
実行形式じゃない二重拡張子で起こるってどこの糞ソフトだよ
402デフォルトの名無しさん:2013/07/09(火) 08:51:57.51
>>399
ないわー
403デフォルトの名無しさん:2013/07/09(火) 10:14:40.75
>>400
NTFSは大小区別してるよ
404デフォルトの名無しさん:2013/07/09(火) 10:22:27.08
case preservingとcase insensitiveの違いもわかんねえのか
405デフォルトの名無しさん:2013/07/09(火) 12:01:50.96
NTFSはcase sensitiveだが。なにか?
406デフォルトの名無しさん:2013/07/09(火) 13:35:08.18
>>405
ほう、それじゃ
caseSensitive.cppとCaseSensitive.cppが同じフォルダに置けるのか?
case sensitiveなら置けるはずだよなあ
407デフォルトの名無しさん:2013/07/09(火) 14:18:46.91
>>406
http://support.microsoft.com/kb/100625/en-us
> In NTFS, you can create unique file names, stored in the same directory, that differ only in case.
> For example, the following filenames can coexist in one directory on an NTFS volume:
>  CASE.TXT
>  case.txt
>  case.TXT
> However, if you attempt to open one of these files in a Win32 application, such as Notepad,
> you would only have access to one of the files, regardless of the case of the filename
> you type in the Open File dialog box.
408デフォルトの名無しさん:2013/07/09(火) 14:21:43.85
>>406
神も置けると言ってる。

http://support.microsoft.com/kb/100625
In NTFS, you can create unique file names, stored in the same directory, that differ only in case.
For example, the following filenames can coexist in one directory on an NTFS volume:
CASE.TXT
case.txt
case.TXT

自信たっぷりで煽ってたけど、今の気分はどう?
死にたくならない? 普通恥ずかしくて生きてられないよね。
409デフォルトの名無しさん:2013/07/09(火) 14:35:11.28
あとはNTFSの機能をきちんと活かしたシェルを手に入れるだけだな
410デフォルトの名無しさん:2013/07/09(火) 14:37:43.66
Windowsの話なのにNTFSの話で揉めてるのが滑稽
411デフォルトの名無しさん:2013/07/09(火) 14:59:17.35
いずれにしてもWin32アプリだと、同じディレクトリにある大文字小文字違いのファイルを扱えないから
意味ないんだけどな。
かといって、hello.world.hppは無いわ。
412デフォルトの名無しさん:2013/07/09(火) 16:05:10.93
>>408
鬼の首とったようにはしゃいでるけど、WinodwsでNTFSなら結局だめだからw
413デフォルトの名無しさん:2013/07/09(火) 16:28:53.54
>>408
お前みたいな簡単な文脈も読めないでドヤ顔で無駄な知識披露しちゃう奴こそ
死にたくならない?普通恥ずかしくて生きてられないよね。
414デフォルトの名無しさん:2013/07/09(火) 16:39:23.24
NTFSはcase sensitiveだけど、Win32アプリはそれを扱えないって???
なんでこんなミスマッチになったんだ?
APIの変更が多大になりすぎるから止めたにでもなったのか
415デフォルトの名無しさん:2013/07/09(火) 16:42:20.84
ファイル名にはハートマークも使えるくらいだから
416デフォルトの名無しさん:2013/07/09(火) 17:29:58.22
原因は>>403だろ。
どう見てもこいつが話をまぜっかえした。
417デフォルトの名無しさん:2013/07/09(火) 17:33:41.53
>>403
引っ掻き回したいだけなら消えろ
418デフォルトの名無しさん:2013/07/09(火) 17:48:42.09
自分が恥かいたからってなにも向きになって責め立てなくても
419デフォルトの名無しさん:2013/07/09(火) 18:02:37.28
Windowsで区別するオプションあったはずだぞ
動作保証外だからやろうとは思わんが
420デフォルトの名無しさん:2013/07/09(火) 18:07:46.33
>>414
ファイルを扱うAPIとファイルシステムの
機能性はむしろ同じに扱うべきではないと思うが
421デフォルトの名無しさん:2013/07/09(火) 18:35:45.42
べき()wwwww
422デフォルトの名無しさん:2013/07/09(火) 18:45:34.24
プログラムの出力するどんどん追記していくログファイルを監視して
追記になった差分だけを読み込みたいのですが
どのようにするのがよいでしょうか
423デフォルトの名無しさん:2013/07/09(火) 19:19:12.95
>>422
tail -f で出来るから
tailのソースでも読んでみたら?
424デフォルトの名無しさん:2013/07/09(火) 19:26:20.86
>>419
それはNFS向けのやつだろ
425デフォルトの名無しさん:2013/07/09(火) 20:07:08.69
Win32はcase insensitiveと言うべきところをWindowsはと言った>>400が元凶。
426デフォルトの名無しさん:2013/07/09(火) 20:25:03.19
でも explorer 上では case sensitive なのがなんだか
というか、explorer 上で sensitive なのをみて win32 もそうだと思い込んでいる奴がいないか?
427デフォルトの名無しさん:2013/07/09(火) 20:27:38.86
>>422
fseek
428デフォルトの名無しさん:2013/07/09(火) 20:28:35.93
>>426
いつまではしゃいでるんだよ
429デフォルトの名無しさん:2013/07/09(火) 20:34:47.48
区別出来ないのに統一を怠る姿勢に対して
無頓着(insensitive)と呼びたい
430デフォルトの名無しさん:2013/07/09(火) 20:34:52.92
>>428
そうか、お前もその一人か
431400:2013/07/09(火) 22:11:26.07
……要するに、「explorerでは大小区別しないし、Win32アプリからも大小区別できない。
だけどNTFSの仕様上は大小区別して置ける」ということか。なるほどなるほど

ファイル名にキャメルケースは止めておこう
432デフォルトの名無しさん:2013/07/09(火) 22:13:56.52
FATに置いた瞬間ダメになるんじゃ
433デフォルトの名無しさん:2013/07/09(火) 22:20:38.16
FAT も LFN 対応なら区別するんじゃなかったかな?
まあこれもあくまで、ファイルシステムの仕様としては、という話だが
434デフォルトの名無しさん:2013/07/09(火) 23:20:43.62
今日のムダ知識大賞にノミネートされました
435デフォルトの名無しさん:2013/07/10(水) 00:13:26.68
最近身を以って実感したんだけど、並列処理時に参照渡しってするべきじゃなかったんだな……
重い処理部分をOpenMPで処理したはずなのになぜか遅かったから調査してみたら、
並列処理してる関数内で頻繁に操作される変数(参照渡し)が悪さしていることが分かったので、
値渡しに切り替えたら一気に高速化した……そんなのどこにも書いてなかったから知らなかったんだぜorz
436デフォルトの名無しさん:2013/07/10(水) 00:31:55.40
>>435
独立したスレッド同士で扱う変数が実際のアーキテクチャでどう処理されるか考えるといいよ
むしろ普通ならレーシングで潜在的バグになるところを正しく処理するOpenMPは凄い
だからといって「並列処理時に参照渡しすべきでない」は早計
正しく使えばいいだけ
437デフォルトの名無しさん:2013/07/10(水) 00:33:02.27
全ては実測
438デフォルトの名無しさん:2013/07/10(水) 00:34:36.27
なんかconstつけたら早くなりそうな話だな
439デフォルトの名無しさん:2013/07/10(水) 00:45:49.23
>>437
これガチ
440デフォルトの名無しさん:2013/07/10(水) 00:50:08.02
結局>>400=431は
>>404のcase preservingが理解できなかったのかな
441435:2013/07/10(水) 01:47:19.26
>>436
参照渡しする変数は一応並列化用に配列として、それぞれのスレッド毎にあてがってたんだけど、それでも遅いとは……
まあ実測が一番ですよね、以後気をつけます
442デフォルトの名無しさん:2013/07/10(水) 03:21:20.29
>>441
コード見てみないとわからないけど頭の悪い解析で勝手なmutex埋め込まれると確かに厄介だな
でもGPUと違ってCPUはブロック単位でキャッシュに載るから近い領域に同時に書き込もうとするとストールしそう
443デフォルトの名無しさん:2013/07/10(水) 09:19:34.27
OpenMPって引数の排他制御なんて余計なお世話するか?
単に参照渡し(間接アクセス)と値渡し(レジスタ)の差じゃねーの?
444デフォルトの名無しさん:2013/07/10(水) 18:59:02.17
>>443
普通に考えたらしないけどコンパイラによってしててもおかしくない気がした
規格読んでないから分からない

値渡しが安全なのは当然だけど参照渡しだから遅いってのはおかしな話
あとその括弧書きは的を射てない
値渡しでも関節アクセスになり得る
445デフォルトの名無しさん:2013/07/10(水) 19:32:07.73
参照渡しは並列処理関係無しに最適化を阻害するから
あり得ると思うよ
446デフォルトの名無しさん:2013/07/10(水) 21:47:31.88
http://olab.is.s.u-tokyo.ac.jp/~reiji/openmp.html
ここみると引数の排他制御はやってない。やっぱ間接参照だから遅いんじゃない?
447デフォルトの名無しさん:2013/07/10(水) 22:21:15.27
>>435はコードすら示していないので考えるだけ無駄
448デフォルトの名無しさん:2013/07/10(水) 23:20:29.05
この条件で、コードが無けりゃ考えられないのは素人
449デフォルトの名無しさん:2013/07/11(木) 00:14:17.05
とド素人が申しております
450デフォルトの名無しさん:2013/07/11(木) 06:50:01.50
値渡しできて、頻繁に使われる変数を参照渡し?

OpenMP 使う以前にやることが...
451デフォルトの名無しさん:2013/07/11(木) 17:13:13.56
>>450
え、何?
452デフォルトの名無しさん:2013/07/13(土) 12:19:03.58
あるゲームで、キャラクタを作成、管理するために
「Chara」クラスをつくりました。

class Chara {
int id;// キャラごとにユニークなID
int hp, str…;// 「キャラのHP」とか「キャラの攻撃力」とかのパラメータ
static int staticID;//新しく作成するユニットにIDを振るために保持
static void makeChara();
}

map<int, Chara*> charaMap;//グローバル変数 makeCharaで作成したキャラデータを保管

void Chara::makeChara {
Chara* c = new Chara();
(cのhpとかstrとかをセット)
c->id = Chara::staticID;
charaMap.insert(map<int, Chara*>::value_type( Chara::staticID, c));//マップに格納
Chara::staticID++;
}

この方法だと、Chara::makeCharaが呼ばれてChara::staticIDが増えるたびに
全キャラのidが連動して変化するみたいなんです。

makeCharaメソッドで振ったIDをずっと保持するにはどうしたらいいでしょうか?
453デフォルトの名無しさん:2013/07/13(土) 12:35:09.77
すみません、自己解決しました。

動作がおかしいところをよく見ると
「c->id」使わなきゃいけないのに「c->staticID」のほうを使ってました。
(cは直前にcharaMapからとってきたCharaオブジェクトのポインタ)

つか、c->staticIDって普通にエラーにならずに書けて使えちゃうんですね…
454デフォルトの名無しさん:2013/07/13(土) 12:36:26.77
そんなわけねーだろ
455デフォルトの名無しさん:2013/07/13(土) 12:37:12.75
解決してたか
456デフォルトの名無しさん:2013/07/13(土) 12:38:27.48
↓設計の良し悪しを語り始めるアホ
457デフォルトの名無しさん:2013/07/13(土) 18:11:23.87
その設計は偽物だ
食べられないよ
458デフォルトの名無しさん:2013/07/13(土) 19:04:26.91
>>453
>c->staticIDって普通にエラーにならずに書けて
禿は馬鹿だから仕方ない
459デフォルトの名無しさん:2013/07/14(日) 14:47:01.23
説明しにくいんですが、継承クラス作るときの書き方みたいに
クラスの宣言内のコンストラクタに
クラス名(int,int):クラス内のメンバ変数名(引数),クラス内のメンバ変数名(引数)
みたいに書いてるのをたまに見かけます。
トレースしたいんだけど、コンストラクタに:をつけて変数ならべるのは
どういう意味ですか?
460デフォルトの名無しさん:2013/07/14(日) 14:49:09.88
>>459
メンバ変数の初期化、なんでこういう流儀を導入したかのかはしらん
461デフォルトの名無しさん:2013/07/14(日) 14:58:35.83
メンバ関数がconstだったり参照だったりすると>>459の方法でしか初期化できないからじゃん
後に続く{}の中で変更しようとしても無理
462デフォルトの名無しさん:2013/07/14(日) 14:58:53.19
×メンバ関数
○メンバ変数
463デフォルトの名無しさん:2013/07/14(日) 15:45:43.69
>>459
初期化子かな?
メンバ変数の最も無駄の無い初期化と言われているよ。

{}の中に式で初期化を行うのは効率が悪い場合があるんだよね。
もちろん、多くの場合は微々たるものだけど。
464デフォルトの名無しさん:2013/07/14(日) 15:51:55.56
class A {
const int a;
int& b;
};

↑こういうのを初期化するには初期化子しか手段がない
465デフォルトの名無しさん:2013/07/14(日) 15:56:32.82
メンバ変数のコンストラクタ呼び出し、だな
機能的には

基底クラスのコンストラクタ呼び出しと
文法的に同じ形にしたかったんだろう
466デフォルトの名無しさん:2013/07/14(日) 16:18:50.04
例えば、メンバ変数std::string a;を{}内で初期化すると
最初にstringのデフォコンが呼ばれ、その後で代入が行われるからムダになる
467デフォルトの名無しさん:2013/07/14(日) 16:39:12.22
C++11ならメンバ宣言に初期化子付けられるがインスタンスごとに変えようとするならその文法も避けられぬ
468デフォルトの名無しさん:2013/07/14(日) 16:45:22.87
std::initializer_listはマジ便利だな
469デフォルトの名無しさん:2013/07/14(日) 17:18:48.14
皆さま、レスありがとうございます。
理解出来ましたが、その変数はconstでも無いし、参照でも無いんですよ。

でも、一番無駄が無い初期化の仕方というわけならば
ソースを書いたのはプロフェッショナルな方ですから
日頃からそう初期化する習慣のある方、ということですよね?

普段コンストラクタの{}内で書いてた変数=初期化値;は
コンストラクタ:変数(初期化値)
と書いた方がなにかと良いよ、ということでよろしいですか?
470デフォルトの名無しさん:2013/07/14(日) 17:26:53.98
欠点は、初期化順が初期化子の記述順ではなくメンバー変数の
記述順になり混乱の原因になる場合がある。
471デフォルトの名無しさん:2013/07/14(日) 17:59:31.36
大抵は警告出すけどね
警告無視するアホがいるから何とも言えないが
472デフォルトの名無しさん:2013/07/14(日) 18:02:45.14
そんな書き方をするアホが悪いでFA
473デフォルトの名無しさん:2013/07/14(日) 18:03:18.14
俺の思う欠点も挙げておくよ。
全てのコンストラクタに書かないといけないのが事故の元。
c++11なら楽なんだけどねー。
474デフォルトの名無しさん:2013/07/14(日) 18:59:48.07
だからコンストラクタが多いと結局初期化関数使う事もあるんだよね
C++11ならいいんだけど
475デフォルトの名無しさん:2013/07/14(日) 19:54:51.61
VSも早く対応してくれねーかな
476デフォルトの名無しさん:2013/07/14(日) 20:12:26.52
既にプレビュー版では入ってるし
年内には出るだろ
477デフォルトの名無しさん:2013/07/14(日) 20:15:08.05
C++ってどこで使ってんの?
大半のシステムはjavaとか.Netとかだし
組み込みみたいにパフォーマンスが欲しいならCだし
478デフォルトの名無しさん:2013/07/14(日) 20:17:33.13
市販のパッケージ製品?
479デフォルトの名無しさん:2013/07/14(日) 20:18:06.44
>>475
高い金取っているVSはすでにC++11完全対応じゃないのかよ
480デフォルトの名無しさん:2013/07/14(日) 20:19:46.76
>>477
その java とか .net とかは C++ じゃないかな
481デフォルトの名無しさん:2013/07/14(日) 20:21:55.20
>>477
どうでも良いシステムはjavaとか.Netだけど
重要システムや大規模システムはほとんどC++
482デフォルトの名無しさん:2013/07/14(日) 20:21:57.05
対応コンパイラってどれ?
483デフォルトの名無しさん:2013/07/14(日) 20:24:32.83
VC2012
484デフォルトの名無しさん:2013/07/14(日) 20:40:20.34
>>479
VS2012ですらC++11には半分ぐらいしか対応してないからな……
ってこれ過去ログで誰か言ってなかったか(URLを添えて)
とりあえずMSDNに書いてあった奴↓
ttp://msdn.microsoft.com/ja-jp/library/vstudio/hh567368.aspx
485デフォルトの名無しさん:2013/07/14(日) 20:42:34.77
逆に完全対応のコンパイラどれだよ
486デフォルトの名無しさん:2013/07/14(日) 20:56:54.75
完全対応は知らんがVC++はかなり酷い部類
487デフォルトの名無しさん:2013/07/14(日) 21:02:35.02
>>485
Clang
488デフォルトの名無しさん:2013/07/14(日) 21:05:03.41
11の魅力を知ってVSなんて使ってる奴いるのかよ
GUIしか扱えない学生レベルのもんだろあれは
489デフォルトの名無しさん:2013/07/14(日) 21:05:48.48
お前ら仕事でもぽんぽん11使えてるのか
490デフォルトの名無しさん:2013/07/14(日) 21:08:58.26
仕事じゃcppすら触らせてくれんわ
周りバカばっかだからjavaと.NETしか扱えない
491デフォルトの名無しさん:2013/07/14(日) 21:15:20.63
インテリセンス無しにコーディングできない体になってしまってな
492デフォルトの名無しさん:2013/07/14(日) 21:19:10.82
493デフォルトの名無しさん:2013/07/14(日) 21:34:40.89
Java/.NETが許される場面ならC++なんぞ
お呼びでない
メモリ破壊とメモリリークのデメリットしか無いからね
バカだからjavaという発想の>>490が馬鹿
494デフォルトの名無しさん:2013/07/14(日) 22:49:24.67
java や .net もCで書かれてんだけどな。
495デフォルトの名無しさん:2013/07/14(日) 23:28:45.56
>>493
いやバカだから土方言語の案件しか取ってこれないんだろ
技術ある会社なら腐らせないで活用するのが当たり前
496デフォルトの名無しさん:2013/07/14(日) 23:47:17.38
>>488
いや、逆に11に対する辛口の評価を背中で語っている存在だぜ
2010のinitializer_listは爆笑ぶっこいたけど
497デフォルトの名無しさん:2013/07/14(日) 23:53:54.66
流れぶった切るけど、vectorやdequeなどで宣言する型に「newで確保した動的配列」って使えたっけ?
要するに、

int *x; x = new int[3];
vector<int[]> a;
a.push_back(x);

みたいに書きたいんだけど、↑ではちょっと不味いらしくて
498デフォルトの名無しさん:2013/07/14(日) 23:59:25.93
vectorのvectorを使うとか
499デフォルトの名無しさん:2013/07/14(日) 23:59:55.09
vector<vector<int>>
500デフォルトの名無しさん:2013/07/15(月) 00:01:07.33
できるがvector<int[]> a;がダメだろ。
int*型にしないのは。
501デフォルトの名無しさん:2013/07/15(月) 00:01:09.71
え、やっぱvectorしかダメ?
高速化のためにあえてnewした動的配列使ってたんだけど……
一旦vectorに積み替えてから使う方向でないとダメなのか
502デフォルトの名無しさん:2013/07/15(月) 00:02:48.30
>>500
int*型? ……おお、コンパイルが無事通りました。ありがとうございます
503デフォルトの名無しさん:2013/07/15(月) 00:02:50.95
それ高速化になってるの?実測して言ってる?
504デフォルトの名無しさん:2013/07/15(月) 00:04:31.50
やらんでいい高速化をして速くなった気になってるけど
全く変わらない悪寒
505デフォルトの名無しさん:2013/07/15(月) 00:05:55.84
>>504
いや、一応速度を測ったら微妙にnew配列の方が速かったから使っているだけ
最初はvectorで書いてたけど、割りとギリギリな最適化が要りそうなので手直し中
506デフォルトの名無しさん:2013/07/15(月) 00:06:14.00
これは確かに高速化になる。
vector<vector<>>は、メモリ拡大が起こると、再確保のためにメモリ大移動が起こるが。
ポインタしか扱わなければ、32ビットか64ビットのポインタ配列の拡大のみで軽い。
507デフォルトの名無しさん:2013/07/15(月) 00:07:41.76
vector<int*>じゃなくてvector<int>で一次元配列化した方が速いと言うことは無いかい?
508デフォルトの名無しさん:2013/07/15(月) 00:08:35.91
jag配列なら仕方が無いけど、要素数を保存しないってことは行列か三角行列なんじゃないの? 違う?
509デフォルトの名無しさん:2013/07/15(月) 00:09:01.09
勝手にメモリ移動させるSTLのコンテナはクソ
510デフォルトの名無しさん:2013/07/15(月) 00:11:34.94
うるせえわがままいうと勝手にガベコレすんぞ
511デフォルトの名無しさん:2013/07/15(月) 00:13:19.77
http://codepad.org/Ds6iJ9G2
実装依存だろうけどvectorって結構サイズあるのな
512デフォルトの名無しさん:2013/07/15(月) 00:17:29.59
>>507
あいにくキューとして使う用途でな……
ガチ演算(再帰探索処理)の前処理に使うから、一からキューを作るのは流石に嫌だったのよ
>>508
JAG配列ではない。盤面状況を保存するための配列をキューに放り込むための確保
513デフォルトの名無しさん:2013/07/15(月) 00:19:31.75
差分保存しろよ
514497:2013/07/15(月) 01:01:45.33
……ん、まずい。ひょっとしてdeque<int*>みたいに宣言すると「ただのポインタの配列」ってことなのか?
「キューからAを取り出してからpop_front→Aを書き換え→push_back→Aを書き換える前に戻す→
最初に戻る」とすると、二回目のループでpop_frontされる奴がまんま書き換える前の奴なんだけどorz
これじゃ(幅優先探索)キューの意味ねーじゃん、どうするべきかな……
515デフォルトの名無しさん:2013/07/15(月) 01:06:44.98
うぜえ……
そんなクソコード書いてる低脳が最適化とか笑わせんな
516デフォルトの名無しさん:2013/07/15(月) 01:46:06.30
C++11ならキューに突っ込む時にムーブになるから速いと思う
517デフォルトの名無しさん:2013/07/15(月) 02:48:42.92
「余計な機能」というのはデメリットにしかならない
518デフォルトの名無しさん:2013/07/15(月) 08:39:48.06

コントロール(フォームも含む)のメソッドは、そのコ
ントロールを作成したスレッドからのみ呼び出される必要があるから
です(注1)。(これは、Windowsフォームがシングルスレッドアパー
トメント(STA)モデルを使用しているためです。詳しくはヘルプの「マ
ルチスレッド Windows フォーム コントロールのサンプル」等をご覧
ください。)コントロールを作成したスレッド以外のスレッドからそ
のコントロールのメソッドを呼び出すには、マーシャリングにより、
コントロールを作成したスレッドからメソッドを呼び出します。この
マーシャリングには多くのリソースを消費しますが、これを確実且つ
効率よく行う方法として、ControlクラスにはInvoke、BeginInvoke、
およびEndInvokeメソッドが用意されています。


 これは記述はdobonのメルマガにあったんだが、意味が分からん。
上ではメソッドと書いてあるが、変数であってもアクセスできない
と思うが、、、、というかTextBox.textにアクセスするような時に
「なんで書き込みできんのだ?」って気が付くわけなのだがなんでなの?
 上は間違ってるの? たんなる言葉の綾? プロパティもメソッドの
ひとつってこと?
 Invoke使わないアクセス方法はあるの? たとえばサブスレッドから
グローバル変数にライトして、メインスレッドからはグローバル変数を
読むみたいな。
519デフォルトの名無しさん:2013/07/15(月) 09:40:34.15
C#はすれちがい
520デフォルトの名無しさん:2013/07/15(月) 09:41:30.64
>>518
メッセージ
521デフォルトの名無しさん:2013/07/15(月) 10:45:53.70
 メッセージはプロセス間だろ
522デフォルトの名無しさん:2013/07/15(月) 10:48:25.04
>519
 .NETならC++もC#もおなじことだろ。というかこんなのはC++使ってる
のが詳しいとおもったから。
523デフォルトの名無しさん:2013/07/15(月) 10:53:33.07
C++/CLIもスレ違いだからそっち行けば
524デフォルトの名無しさん:2013/07/15(月) 12:10:18.57
>>521
Windowsアプリ作ったことないの?
メッセージループが基本なんだけど。
525デフォルトの名無しさん:2013/07/15(月) 12:12:31.29
>>518
プロパティの実体はメソッドだよ
Aっていうプロパティがあったら、
get, set 用にそれぞれ get_A と set_A っていう隠しメソッドが作成される
526デフォルトの名無しさん:2013/07/15(月) 12:13:46.75
いずれにせよC++には関係ないな
527デフォルトの名無しさん:2013/07/15(月) 12:17:18.34
C++/CLIなら・・・
528デフォルトの名無しさん:2013/07/15(月) 12:17:18.96
>>518
バカか?それを書いた奴に聞け。
超メジャーな教科書の疑問ならともかく、素人が垂れ流したクソの後始末を持ってくんな。
529デフォルトの名無しさん:2013/07/15(月) 12:21:46.52
>>518
WindowsでUIスレッドとは別のスレッドからコントロールに直接アクセスできないのは基本中の基本
それと変数や単に変数をラップしたプロパティは別の話
スレ違いだからこれ以上はよそで
530デフォルトの名無しさん:2013/07/15(月) 12:24:23.00
単に変数をラップしたプロパティも
別スレッドから扱うなら排他すべきだろ
531デフォルトの名無しさん:2013/07/15(月) 12:28:14.26
なんで別スレからアクセスしたらあかんの?
532デフォルトの名無しさん:2013/07/15(月) 12:28:16.14
>>530
場合によっては排他すべき変数アクセスと、初めから禁じられている
別スレッドからのコントロールアクセスは全然別の話
533デフォルトの名無しさん:2013/07/15(月) 12:30:11.65
>>531
仕組みとしてスレッドセーフじゃないからじゃないの?
つまり、仕様。
534デフォルトの名無しさん:2013/07/15(月) 12:45:52.02
別にWindowsに限った話じゃない
大抵のGUIツールキットはマルチスレッドに挑んでぼこぼこにされて帰ってくる
535デフォルトの名無しさん:2013/07/15(月) 14:08:20.38
だからマルチスレッドのGUIツールキットは自前(自社)で開発したのを使っているところが多いよね
536デフォルトの名無しさん:2013/07/15(月) 14:46:41.05
意味ない。
画面表示はシングルで十分。
内部がマルチスレッドになっていても、
人間がマウスやキーボードで操れるのは一つのウインド。
ドラッグアンドドロップでも関わるのは2つのみ。
537デフォルトの名無しさん:2013/07/15(月) 14:59:06.93
ログ表示でちょっと困る
538デフォルトの名無しさん:2013/07/15(月) 15:24:23.70
風になれー
539デフォルトの名無しさん:2013/07/15(月) 15:45:29.99
>>536
意味がないということはない。
例えばユーザ操作とは無関係に変化する情報を
リアルタイムで表示しなければならない場合とか。
540デフォルトの名無しさん:2013/07/15(月) 15:48:14.55
ロックしてUIと別のスレッドから操作する、じゃなくて、
UIスレッドで実行する、だからな
541 ◆QZaw55cn4c :2013/07/15(月) 16:38:32.26
>>537
それわかるタイマーを使ってイベント毎にUIスレッドから定期的にログ内容保持部にお伺いを立てて‥‥とか一手間いった記憶があるね適当に自分で書かないとどうしようもない
542デフォルトの名無しさん:2013/07/15(月) 17:08:39.64
>>541
なんでメッセージ使わないの?
543 ◆QZaw55cn4c :2013/07/15(月) 17:12:56.72
>>542
自前でメッセージを定義か‥‥今度やってみる
544デフォルトの名無しさん:2013/07/15(月) 17:55:34.28
素人しかおらんのか
545デフォルトの名無しさん:2013/07/15(月) 18:24:08.07
暑いから素men
546デフォルトの名無しさん:2013/07/15(月) 18:53:02.27
Windowsアプリでは、UIスレッドとの通信にはメッセージ使うのが普通だと思ってたが、そうでもないのか。
547デフォルトの名無しさん:2013/07/15(月) 19:21:13.57
QはDOSの頭だからWindowsが理解できないんだろ
548デフォルトの名無しさん:2013/07/15(月) 20:20:56.24
>>546
そう、それがごく普通の当たり前のやりかた
C#のマーシャリングだってPostMessage/SendMessage使ってるんだし
549デフォルトの名無しさん:2013/07/15(月) 20:28:32.91
マーシャルてなんですか?
550デフォルトの名無しさん:2013/07/15(月) 20:34:03.95
「マーシャリング」自体は広い意味を持つ言葉だけど>>548で言ってるのは>>518の意味
スレッド間の間接メソッド呼び出し
551デフォルトの名無しさん:2013/07/15(月) 20:35:56.36
comオブジェクトを使う時のアレとは違うのですか?
552デフォルトの名無しさん:2013/07/15(月) 20:50:09.19
一般的に「マーシャリング」っていうと何らかの境界を越えて間接的な
呼び出しやパラメータ伝送を行うことであって、具体的に何を意味するのかは
個々のテクノロジーによって違う。
553デフォルトの名無しさん:2013/07/15(月) 20:56:03.78
仕事でC++を使うことになりました。
お勧めの入門書がありましたら教えてください。
C言語の知識は十分あるので、C言語と重複するような内容は省かれた、C言語を理解している人向けの
入門書を探しています。
ちなみに開発プラットフォームはQtです。
Java等も知らないのでオブジェクト指向初心者です。
554デフォルトの名無しさん:2013/07/15(月) 21:14:30.52
>>553
「独習」一択,信頼のハーバードシルト先生
555デフォルトの名無しさん:2013/07/15(月) 21:19:19.41
日本人の参考書の使えなさは異常
556デフォルトの名無しさん:2013/07/15(月) 21:36:25.25
>>553
禿4
557デフォルトの名無しさん:2013/07/15(月) 22:06:29.97
独習はC♯が微妙だった覚えがある
558デフォルトの名無しさん:2013/07/15(月) 22:49:15.15
>>557
Java の方がもっと微妙肝心のvirtual関連が説明/定義のみで使えない、というか使うなといわんばかり
C# はまだまし
559デフォルトの名無しさん:2013/07/16(火) 00:44:23.59
C省いてるなら独習かな
560デフォルトの名無しさん:2013/07/17(水) 04:29:32.80
ここにはロベールの翻訳が、とかの人はこないの?
561デフォルトの名無しさん:2013/07/17(水) 07:31:10.64
単に「C言語と重複するような内容は省かれた」の条件に合わないだけじゃ
562デフォルトの名無しさん:2013/07/18(木) 23:58:13.61
いずれは国籍なんて無視して理系及び理系の重要性を認めて理系側についた
人間(ニュータイプ)だけで独立国家のジオン公国つくって、何も生み出す
能力がなく金や資源や穀物を右から左に動かして中間搾取するだけのモラル
の無い腐りきった文系男(オールドタイプ)国家に戦争しかけるのが人類の
最終形態だろう、200年先になるか300年先になるかはわからんが
563デフォルトの名無しさん:2013/07/19(金) 00:04:35.02
何なんだ意味不明なマルチポスト
564デフォルトの名無しさん:2013/07/19(金) 00:09:05.21
物作りをする人間に報いるのは社会を活かすか殺すかという大問題だが、活かすためにも
官僚的な人や流通させる人も重要だ。物作りだけする人は営業や物流に疎くなる事があり
それが産業自体に危機を招くこともある。
だからと言って搾取する輩はいつの世にもいるので取り締まる仕事も要る。

PGは理系かね?
565デフォルトの名無しさん:2013/07/19(金) 00:12:46.26
NEC系列のPGは文系混じりのパープリン
他は基本的にすべて理系
566デフォルトの名無しさん:2013/07/19(金) 00:16:12.01
銀行の勘定系、理系で設計できるかな?
567デフォルトの名無しさん:2013/07/19(金) 00:27:26.17
むしろ文系には無理
568デフォルトの名無しさん:2013/07/19(金) 00:31:18.22
1ビット脳が謎の万能感に浸るスレと聞いて
569デフォルトの名無しさん:2013/07/19(金) 00:48:12.17
文系の方がいいプログラム作るぞ。
理系はどうも技術を追いすぎるか、動きゃいい的なヤツが多い。
あくまで、俺の回りは、の話な。
570デフォルトの名無しさん:2013/07/19(金) 00:51:36.51
文系つったら三峯徹
571デフォルトの名無しさん:2013/07/19(金) 00:58:56.27
>>569
「良い」の基準がよくわからないんだが
やっつけでいいのか保守しやすいように組む必要があるのかは状況によりけりなんじゃね
572デフォルトの名無しさん:2013/07/19(金) 01:03:21.27
勘定系の設計なんて、会計ルールや関連する法律、慣行を理解してないと苦しいと思うが。
573デフォルトの名無しさん:2013/07/19(金) 01:09:41.21
>>571
その通りだよ。
文系の方が空気を読んで、適材適所てきなものを作ってくれる。
今書いてて思ったんだが、単に文系は意図を汲んでくれるが、理系は自己中なだけって気が。

あくまで、俺の回りは、ね。
574デフォルトの名無しさん:2013/07/19(金) 01:15:06.46
結局さ、どれだけ業務を理解しているかとか、仕様を理解しているか、がまず重要で、次にそれをコードと言う文書に書き起こせるかで全てじゃね?
理系の優位って、組み込みでもなければ、あまり無くね?
575デフォルトの名無しさん:2013/07/19(金) 01:40:04.96
あー、確かになー
人の書いた文書を理解して、機械の為の文書に翻訳してるわけか
思いっきり文系の仕事だな
576デフォルトの名無しさん:2013/07/19(金) 03:05:47.99
初心者なのでよくわからないのですがVSexpressはどの種類を使ったらいいですか
577デフォルトの名無しさん:2013/07/19(金) 03:34:49.62
いらないスキルのMBほどよく出る
578デフォルトの名無しさん:2013/07/19(金) 03:40:04.46
誤爆
579デフォルトの名無しさん:2013/07/19(金) 05:52:49.04
業務系アプリの詰まらなさは異常
580デフォルトの名無しさん:2013/07/19(金) 06:55:46.30
>>569
> 文系の方がいいプログラム作るぞ。

プログラムを作ると言ってる時点で君に能力がないのがまるわかり。
要件定義〜設計〜製造〜テストの各工程で必要とされる能力はちがう。
あとツールみたいな小規模なプログラムなら、その場の空気読んで適材適所な対応でいいけど、勘定系みたいな大規模な奴は将来を予測して保守性も考えとかないと破綻するぞ。
581デフォルトの名無しさん:2013/07/19(金) 06:59:59.30
>>579
とくに法律や慣行なんかで背景がわからないものへの対応はモチベーションが下がる...
582デフォルトの名無しさん:2013/07/19(金) 07:50:46.81
>>580
理系にはお前みたいに理解しようとしないヤツが多いって言ってるの。
お前が理系かどうかに興味は無いけどな。
文系のヤツは、保守が必要なら、その必要性を理解した上で提案してくれる。

あくまで、俺の回りは、な。
583デフォルトの名無しさん:2013/07/19(金) 08:06:18.85
類は友を呼ぶって知ってるか
584デフォルトの名無しさん:2013/07/19(金) 08:48:16.19
>>582
保守と保守性の区別もついてないのか...
このレベルで自信満々なのが笑える
585デフォルトの名無しさん:2013/07/19(金) 09:29:35.43
法律とか作る奴らは将来を予測して保守性を考えたりしてくれないぞ
パワーゲームの尻拭いで見事な糞仕様を出してくれる
586デフォルトの名無しさん:2013/07/19(金) 09:36:45.11
>>584
横だけど、そう言う細かい事を言ってるわけでは無いと思うよ
587デフォルトの名無しさん:2013/07/19(金) 11:33:07.70
未だに理系・文系って分けて考えるのが、既に時代遅れだけどな。
ヨーロッパの一部、例えばフランスには理系・文系の名残はあるよ。
ただしそこでは、文系は理系相当のスキルをマスターしてる事が大前提。
更に、歴史・文学・政治などでの議論が出来るだけの最低限の教養を要求される。
いわゆる社会を動かす、本当の意味でのエリートだ。
一方、技術だけで食っていく人生の選択肢もある。
身分制度が厳しいがゆえのシステム。
日本の自称文系は、言論・哲学などの、「結果の間違いを指摘しづらい、方法論すら提示されていない」分野に逃げ込んでるだけ。
588デフォルトの名無しさん:2013/07/19(金) 11:34:21.22
>>585
保守性 (保守じゃないよ) をどうするかを考えるのは、作り手だぞ?
お客さんや、ましてや法律作る奴等には直接関係しないよ。
見事な糞仕様でもなんとか対応できるように、保守性を高めとくんだから、言わば自衛手段だよ。

>>586
細かいと思っているなら、>>582 と同レベルと言うこと。
無理に割り込まない方がいいと思うぞ。
589デフォルトの名無しさん:2013/07/19(金) 12:43:34.86
>>588
何でそんなに人を見下すような形で噛みついてるの?
横から見るとそこが気になる
590デフォルトの名無しさん:2013/07/19(金) 12:46:23.43
まいたいけ
591デフォルトの名無しさん:2013/07/19(金) 13:00:24.12
>>589
噛みついてる?
単なる提案ですよ
592デフォルトの名無しさん:2013/07/19(金) 13:52:46.00
C++の話をしようぜ
593デフォルトの名無しさん:2013/07/19(金) 13:56:16.12
キレてないですよ!
594デフォルトの名無しさん:2013/07/19(金) 15:48:54.55
>>587
ある程度から下の文系には知障みたいなのまで入るから仕方ない
時代遅れつーより知恵遅れ
595デフォルトの名無しさん:2013/07/19(金) 19:22:39.71
ただのバカが理系じゃないってだけで自分は文系だって言ってるのは少し文系の人が可哀想には思えるよな
596デフォルトの名無しさん:2013/07/19(金) 19:33:48.69
こんにちは。質問です

C++でウィンドウズアプリケーションの開発を行いたいのですが
開発環境はどの開発環境がよいでしょうか。

EcliplseではWinアプリは作れませんか(MFCやDLLが使えない?)
VC++が一番よいでしょうか。

Cは基本を学びコンソールプログラムが作れます。
C++でオブジェクトとクラスを学び、C#、JAVAに流れようと考えています。
Windowsアプリは絶対ではなく、最終的にはオープン系アプリの開発知識を
つけたいと思っています。よろしくお願いしますm(_ _)m
597デフォルトの名無しさん:2013/07/19(金) 19:37:40.87
追記すいません。
EclipseではminGWとGCC(これはminGWに入ってる?)
が必要になりますでしょうか。
598デフォルトの名無しさん:2013/07/19(金) 19:58:38.55
>>596
悩むぐらいなら素直にVC入れてたらええやないの、と言ってみる
599デフォルトの名無しさん:2013/07/19(金) 20:28:34.49
>>596
C++最強ウィンドウズアプリケーションの開発環境はC++ Builder
64bitアプリではデファクトスタンダードの開発環境
600デフォルトの名無しさん:2013/07/19(金) 20:45:35.51
C++ Builderってまだ存在してたのか
601デフォルトの名無しさん:2013/07/19(金) 20:55:43.14
デファクトスタンダードとか冗談
602デフォルトの名無しさん:2013/07/19(金) 21:13:31.25
冗談
603デフォルトの名無しさん:2013/07/20(土) 01:14:45.62
lex/yacc
あたりでC++のプログラムを読み込んでC++のプログラム自動改変したい

既存のソース公開されてるC++リファクタリングツールで改造しやすいの
ないですか?

それから

#hoo baa parameter

みたいな感じで改変する場所や変数に目印したいのですが
#progn baa param
はやっちゃだめなんでしょうか?
#progn
以外に自分で勝手に使える名前はないですか?
604デフォルトの名無しさん:2013/07/20(土) 01:31:53.35
ちょっと君には無理目
605デフォルトの名無しさん:2013/07/20(土) 01:32:18.02
>>603

#pragma comment( user, "hoo baa param")

すればいいのかな?

C++のリファクタリングツールでPorkというの以外にソース公開してるのみつからなかった

C++読み込む部分だけ誰かlex/yaccで書いてないかな
606デフォルトの名無しさん:2013/07/20(土) 01:53:49.55
いまなら libclang とかじゃないの?
607デフォルトの名無しさん:2013/07/20(土) 02:17:37.49
608デフォルトの名無しさん:2013/07/20(土) 02:59:15.61
clangってコンパイルの中間情報(AST)をxmlで出力してたのに
あるバージョンからやめちゃったのは、やっぱり政治なんだろうか
いつなくなるかわからないapiに依存したくないな
609デフォルトの名無しさん:2013/07/21(日) 04:05:11.26
std::complex<double>とかstd::complex<int>とかをひとつのコンテナに入れて、簡単に取り出す方法ってある?
610デフォルトの名無しさん:2013/07/21(日) 05:59:20.41
boost::any
611デフォルトの名無しさん:2013/07/21(日) 14:41:03.43
入れる型の種類が事前に決まってるならVariant、コンセプトが決まってるならTypeErasureの方がいい
Anyは汎用性が高すぎて逆に扱いづらい
612デフォルトの名無しさん:2013/07/21(日) 22:01:40.87
type erasureしたらどうやって元の型を知るの?
613デフォルトの名無しさん:2013/07/21(日) 22:16:56.00
型情報を一緒に格納する
614デフォルトの名無しさん:2013/07/21(日) 22:27:05.66
RTTIを利用してホルダーからstd::type_infoを返せばよい
615片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/22(月) 03:45:57.70
「クロスワード ギバー」
http://katahiromz.web.fc2.com/xword/

これを高速化する方法を教えて下さい。お願いします。自分で考えられる限りの最適化をしました。
616デフォルトの名無しさん:2013/07/22(月) 23:14:48.88
遅い理由分かってんじゃん
発見的じゃない方法使えよ
617デフォルトの名無しさん:2013/07/22(月) 23:40:43.81
"ZIP形式"ってのを押したらZIP形式について説明された事には甚だ驚いた
618デフォルトの名無しさん:2013/07/23(火) 03:58:17.49
utf8周り扱うのに何使ってる?
一貫して何を使うべきか判断材料が欲しいので情報ください
icuは業界標準っぽいけど歴史的経緯でAPIがぐちゃぐちゃでまともに使える気がしない
iconvは移植性低いし、C++11にはstd::codecvtがあるけどUCS以外扱えない
それにutf8のまま処理したいことが多いと思うけどicu以外の選択肢って何かある?
619デフォルトの名無しさん:2013/07/23(火) 04:07:00.09
変換ならicu使ってるけど
APIぐちゃぐちゃって何のことだろう
620デフォルトの名無しさん:2013/07/23(火) 07:35:49.21
頭がグチャグチャ
621デフォルトの名無しさん:2013/07/23(火) 09:30:59.33
int32_tとか
char16_t
とかのtの意味教えてください。
622デフォルトの名無しさん:2013/07/23(火) 09:31:40.60
type
623デフォルトの名無しさん:2013/07/23(火) 09:32:41.78
有難うございます。
char16_t文字列ををcoutで出力する方法教えて下さい。
624デフォルトの名無しさん:2013/07/23(火) 09:40:26.59
std::wcout << char16_t文字列
625デフォルトの名無しさん:2013/07/23(火) 10:13:14.93
ありがたまきん
626デフォルトの名無しさん:2013/07/24(水) 05:38:35.00
>>603-608

NetBeans が antlrでC++読み込みしてるそうだ
NetBeansのリファクタリング機能ってどうなんだろ
使ってる人います?
627デフォルトの名無しさん:2013/07/25(木) 13:03:02.48
スーパークラスのフィールドをスーパークラスのコンストラクタを呼び出すことでサブクラスをインスタンス化した時に楽に初期化したいのですが
サブクラスのコンストラクタにわざわざ
SubClass::SubClass():SuperClass(){}
とするしかないのでしょうか?

また、サブサブクラスが存在した時
SubClass::SubClass():SuperClass(){}
SubSubClass::SubSubClass():SubClass(){}
とすることでSubSubClassのコンストラクタはSuperClassのコンストラクタを呼び出してくれるのでしょうか?
628デフォルトの名無しさん:2013/07/25(木) 19:48:05.71
スーパークラスのデフォルトコンストラクタなら何もしなくても呼ばれるだろ
629デフォルトの名無しさん:2013/07/25(木) 22:40:31.96
デフォルトコンストラクタじゃだめです
値を初期化するので
630デフォルトの名無しさん:2013/07/25(木) 22:55:33.10
>>627はデフォルトコンストラクタ呼んでるじゃん
それに「値を初期化するからデフォルトコンストラクタじゃだめ」は意味不明
631デフォルトの名無しさん:2013/07/25(木) 23:02:44.19
C++プログラマじゃない匂いが
632デフォルトの名無しさん:2013/07/25(木) 23:07:27.32
開発環境があれば試せば一発。百聞は一見に如かず
633デフォルトの名無しさん:2013/07/25(木) 23:56:19.19
そこでスーパーコンストラクタですよ
634デフォルトの名無しさん:2013/07/26(金) 06:04:59.55
635デフォルトの名無しさん:2013/07/26(金) 16:55:10.72
てす
636デフォルトの名無しさん:2013/07/27(土) 12:32:19.60
>>630
デフォルトコンストラクタでは>>634のint aに7という数値を入れられないですよね

で、例えばコンストラクタに引数がいらないにしろ
スーパークラスのメンバに初期化リストを使って値を初期化したいと思ったときはデフォルトコンストラクタではなく自分でコンストラクタを定義して、それをサブクラスから呼ばなければならない、と聞いたのですが
多重継承した際にサブサブクラスが同じようにサブクラスのコンストラクタを呼び出した時、サブクラスのコンストラクタで指定されているスーパークラスのコンストラクタは呼び出されるのでしょうか?という質問です。
637デフォルトの名無しさん:2013/07/27(土) 12:38:27.14
http://codepad.org/pxRtNHLW
こういうことでしたね、疑問解決したので失礼します
>>634ありがとうございました
638デフォルトの名無しさん:2013/07/27(土) 17:56:57.21
>>637
/* end */ は馬鹿のしるし
礼なんか書くな馬鹿野郎
639デフォルトの名無しさん:2013/07/27(土) 18:09:09.99
/* end */
の行が改行なしとかねw
640デフォルトの名無しさん:2013/07/31(水) 10:17:25.47
boost::threadを使ってれば、
あとでboostをstdに変えるだけでそのまま使えますか?
641デフォルトの名無しさん:2013/07/31(水) 10:52:45.51
はい
642デフォルトの名無しさん:2013/07/31(水) 12:48:35.77
boost::numeric::ublas::prodの関数が引数にどんな行列を与えても
invalid argumentsでコンパイルエラーになってしまうのですが
こういうケースは何が原因でしょうか?

OSは Mac OS X 10.8 Mountain Lion、 
boostのバージョンは1.47.0で、boostライブラリのprod以外は普通に使えています
643デフォルトの名無しさん:2013/07/31(水) 20:21:51.58
>>642
ググってわかんないなら、コード読めばいいよ
644デフォルトの名無しさん:2013/07/31(水) 21:44:02.80
久しぶりに使ったら、数値と文字列の変換ですら、自動変換はしてくれず、単なるキャストはできず面倒だ。
ブーストは互換性とコンパイル時間が気に入らない。
おすすめの汎用のライブラリ、フレームワークありますか。
何らか土台なしには面倒な言語と認識した。
645デフォルトの名無しさん:2013/07/31(水) 21:49:13.57
Qt
646デフォルトの名無しさん:2013/07/31(水) 21:56:31.67
スクリプトに脳を侵食されたか
もう手遅れです
647デフォルトの名無しさん:2013/07/31(水) 22:01:57.90
>>643
わかんないならいちいちレスしなくていいのよ?
648デフォルトの名無しさん:2013/07/31(水) 22:43:13.19
>>642
行列のサイズあってるの?
(l x m)行列と(m x n)行列の出来上がりのサイズは(l x n)行列だぞ?

>>644
意味わからん言い訳せずに、正直にboostがよくわかりませんといいなさい
649デフォルトの名無しさん:2013/07/31(水) 22:45:08.28
ブースト何それうまいの?
規格の何ページに書いてあるの
650デフォルトの名無しさん:2013/07/31(水) 22:58:37.67
>>649
templateも使わない宣言か…
651デフォルトの名無しさん:2013/07/31(水) 23:00:49.19
boostは依存関係が入り組んでいて、使いたい機能だけを分離して、自作コードと梱包するのは困難だし。
すべてのコンパイラで動作するとは限らないし、動いても同じ出力になるかあやしい。
652デフォルトの名無しさん:2013/07/31(水) 23:04:13.66
>>651
汎用ライブラリなんだから仕方ないだろ
切り出したい部分が明確なら、自分で作ればいいじゃねーか
653デフォルトの名無しさん:2013/07/31(水) 23:07:27.28
>>651
分離する意味がわからない
boostなんて開発環境の一部ってレベルなんだから
一回導入したらおしまいだろ
654デフォルトの名無しさん:2013/07/31(水) 23:10:47.98
出力結果が変わるような使い方するほどboost使い込むレベルなのかという疑問
655デフォルトの名無しさん:2013/07/31(水) 23:11:27.72
ぶーすと厨わきすぎワロタ
656デフォルトの名無しさん:2013/07/31(水) 23:22:54.85
PCやコンパイラが違っても、動作がほぼ変わらないのがいい。
boostのバージョン違いとか、そもそも動作しないとか、boostは困る。boost全体は重い。
657デフォルトの名無しさん:2013/07/31(水) 23:42:20.98
boostの互換性云々言ってる奴はSTLも使わないんだろ?
すげー縛りプレイ
658デフォルトの名無しさん:2013/07/31(水) 23:53:03.76
STL何それうまいの?
規格の何ページに書いてあるの
659デフォルトの名無しさん:2013/07/31(水) 23:55:28.99
>>650
規格の14章のテンプレートか?
使いまくりだが、何を言い出すんだいきなり
660デフォルトの名無しさん:2013/08/01(木) 00:05:27.37
STLはコンパイラ開発してるところが互換性を保つよう開発してる。
boostはコンパイル、実行してみないとわからん。
661デフォルトの名無しさん:2013/08/01(木) 01:04:49.16
>>659
modern design以前の使い方しかしないと…
662デフォルトの名無しさん:2013/08/01(木) 07:54:17.05
そもそもmplないと規約にないtemplateの使い方なんてまともにできないんだしBoostいれないなら関係ないのでは
663デフォルトの名無しさん:2013/08/01(木) 08:58:13.80
互換性を求める用途にC/C++を使うなよってツッコミはなし?
互換性を重視するとC/C++の長所がほとんどなくなってデメリットだけになる
664デフォルトの名無しさん:2013/08/01(木) 12:42:54.47
>>663
個人的には無し
会社ではある程度容認している
665デフォルトの名無しさん:2013/08/01(木) 12:49:27.33
互換性?

移植性のことを言いたいのかなぁ...
666デフォルトの名無しさん:2013/08/01(木) 13:33:18.19
>互換性を重視するとC/C++の長所がほとんどなくなって
意味不明
667デフォルトの名無しさん:2013/08/01(木) 13:52:18.10
>>666
処理系依存な要素を排除するのは難しい
結果としてコードが非常に冗長なものになる
668デフォルトの名無しさん:2013/08/01(木) 13:53:44.15
もっと単純に言うと「C/C++の長所は環境依存した場合に最高のパフーマンスを発揮すること」だということ
669デフォルトの名無しさん:2013/08/01(木) 17:00:37.81
妄想ですね
環境依存部分をパフォーマンスへの影響をごく僅かにしたままスイッチするなんて普通に行われてるし
それが出来なければ、そいつが無能なだけで
670デフォルトの名無しさん:2013/08/01(木) 19:52:15.96
671デフォルトの名無しさん:2013/08/01(木) 22:12:52.82
実際、今どきブースト動かないビルド環境なんてあるの?

そもそも開発環境依存てそんなに気になるか?
一人なら動く環境でやればいいし、大規模開発なら揃えるだろうし、配布なら出来上がりだけで良いと思うんだが
672デフォルトの名無しさん:2013/08/01(木) 22:40:31.34
boostで作られた大盛りスパゲティはさぞかし喰いづらいだろうな…
673デフォルトの名無しさん:2013/08/01(木) 22:59:53.70
複雑になったのはboostが悪いって言えていいな
674デフォルトの名無しさん:2013/08/01(木) 23:14:49.02
boostが黒魔術のかかったコードを世に広めたのは
間違いない
675デフォルトの名無しさん:2013/08/02(金) 00:45:24.73
antlrで変換かければBoost.MPLはいらない
676デフォルトの名無しさん:2013/08/02(金) 13:23:38.01
vectorとかの動的メモリー割り当てサイズを過去の実行結果から学習して予測する
方法って本ありますか?
677デフォルトの名無しさん:2013/08/02(金) 14:16:22.56
そんなピンポイントな本はないんじゃね
678デフォルトの名無しさん:2013/08/02(金) 14:44:48.62
じゃあ、もうちょっと広げて。
679デフォルトの名無しさん:2013/08/02(金) 15:32:00.78
>>676
そんな本は存在しないから
まず自分の頭で考えたら?
680デフォルトの名無しさん:2013/08/02(金) 15:37:42.78
>>676
新しい確保が起きる度にメモリ領域が倍々になっていく理由は、そうすると
再割当て速度がO(n)で済むから

Efficient C++読んでみ
681デフォルトの名無しさん:2013/08/02(金) 15:38:08.25
>>679
あなたが日本語が喋れるのは自分で考えたからですか?
あなたがC++を知っているのは自分で考えたからですか?
あなたが今使っているパソコンは自分で考えたものですか?
682デフォルトの名無しさん:2013/08/02(金) 15:41:04.90
>>680
はぁ?
そんなこときいてるんじゃないんですけど・・・(唖然)
過去の実行データからどれくらい予測したいという言葉もりかいできないんでしょうか?
日本語わかりますか?
日本猿じゃないですよね?
683デフォルトの名無しさん:2013/08/02(金) 15:45:45.29
>>681==>>682

文体そっくりですよ?
煽りたいならもう少し頭使いましょう
あ、頭悪いから無理か
684デフォルトの名無しさん:2013/08/02(金) 15:53:14.90
>>682
「過去の実行結果から学習して予測する方法」ならプログラミング関係なく単純な統計学の範囲
つまり統計学の本を買うのが適切だよ
「割り当てるべき適切なメモリ量の決め方」に関しては>>680が答えになる
685デフォルトの名無しさん:2013/08/02(金) 16:05:51.36
適材適所でプログラムせよ
たとえば1ギガから2ギガにするより、+1ギガを不連続領域に新規に確保するほうが低コスト
686デフォルトの名無しさん:2013/08/02(金) 16:13:08.58
動的メモリ確保 - Wikipedia

TLSFアロケータ
2の累乗ごとのフリーリストでは、最大で50%の無駄が生じる。
たとえば、65バイトのデータを格納するために、128バイトの領域を割り当てる必要があるためである。

Two-Level Segregated Fit アロケータ (TLSFアロケータ、「2レベル分離適合割り当て器」)は、
2のべき乗の分類の下に、さらに細かい分類を行うことでメモリ利用効率を改善する。

速度については、平均的なケースではdmallocと比べて少し遅いが、
固定サイズブロック割り当ての応用であるためどのような状況でも同じ時間で動作し、
最悪時間が存在しないのでリアルタイムシステムに向いている。

2003年に、リアルタイムオペレーティングシステムのアロケータとして発表された。
TLSFアロケータを採用したシステムには、Morph OS などがある。
687デフォルトの名無しさん:2013/08/02(金) 16:20:17.25
初歩的な内容ですみません。
イテレータの指す要素のアドレスを得るには

a = *&it

でいいのでしょうか?
*&がどのような順で解釈されるのかよくわかりません。
688デフォルトの名無しさん:2013/08/02(金) 16:21:10.69
>>686
そういう話じゃねーって言ってんだろ!
689デフォルトの名無しさん:2013/08/02(金) 16:26:38.46
&*itだろ
690デフォルトの名無しさん:2013/08/02(金) 16:27:59.32
>>689
そういう話じゃねーって言ってんだろ!
691デフォルトの名無しさん:2013/08/02(金) 16:53:34.87
いや>>689は正解だろ
692デフォルトの名無しさん:2013/08/02(金) 16:55:22.44
釣られんなよ
>>688>>690は荒らし
693デフォルトの名無しさん:2013/08/02(金) 18:35:42.01
互換性についてだが。
DirectXとかGUIとかOS依存度が高い部分についてでなくて
メモリとか文字列とか基礎的な部分でさえboostは怪しいんだよ。コンパイルすら通らない危険が高い。
本家のページだったかで、各種コンパイラでコンパイル可能かの一覧があるとおもうが。対応がまちまちだ。
694デフォルトの名無しさん:2013/08/02(金) 18:46:44.38
>>678,691
という事は普通に()を付けるか付けないかだけと考えてよさそうですね。
ありがとうございました。

a = &(*it);
 ↓
a = &*it;
695デフォルトの名無しさん:2013/08/02(金) 19:00:21.31
>>693
それはboostの実装が怪しいんじゃなくてコンパイラの実装が怪しいんだろう
696デフォルトの名無しさん:2013/08/02(金) 19:07:19.24
>>695
処理系依存な書き方をしてるだけであってコンパイラの実装は関係ない
697デフォルトの名無しさん:2013/08/02(金) 19:21:50.70
コンパイラ依存を吸収するよう、汎用ライブラリは開発すべき。
698デフォルトの名無しさん:2013/08/02(金) 19:54:56.02
テンプレートの魔界は仕様・実装ともにできちんとカバーされてるのだろうか
699デフォルトの名無しさん:2013/08/02(金) 21:23:39.71
BoostはBoost自体のビルドにめっちゃ時間掛かるのがアレよね、便利だけど。
700デフォルトの名無しさん:2013/08/03(土) 00:01:42.31
ビルドに時間がかかるのはBoost使ってるからじゃなくて、
Boostがtemplate使ってるからだろ。型推定に時間がかかる。
でもそれはランタイムにかかる時間をビルドに追いやってるからで、
実行時には高速に動くと。
701デフォルトの名無しさん:2013/08/03(土) 01:24:37.80
>>696
それどこ?チケットあんの?
702デフォルトの名無しさん:2013/08/03(土) 03:12:17.33
>>700
というかバージョンアップでBoost自体をビルドし直すのが鬱い
特にWindows上でビルドすると死ぬほど時間掛かる

Boostを組み込んで使う分には、全部ビルドし直さず済むような書き方にすればいいんだけど。
703デフォルトの名無しさん:2013/08/03(土) 03:18:58.95
ビルドは早いに越したことはないが、
gentoo Linux stage1 を経験した者からすれば、
あの程度のビルド時間など些細なものだ。
704デフォルトの名無しさん:2013/08/03(土) 05:39:50.30
Boostっての使ったことないけど、なにがいいのよ?
705デフォルトの名無しさん:2013/08/03(土) 09:55:05.71
>>703
なぜそこでGentooが挙がるのか全く分からんのだが
706デフォルトの名無しさん:2013/08/03(土) 11:00:57.77
boostのビルド時間なんて短いほうだろ
ちょっと大きめのコード書いたらすぐあれ以上になる
707デフォルトの名無しさん:2013/08/03(土) 11:07:46.67
>>705
gentoo stage1は初回インストール終了まで何時間もかかる
その後の保守も基本は全コンパイルだからえらく時間がかかる
gccの更新なんかやろうもんなら泣きたくなる
それと比べればコーヒー飲んだり、ちょっと本読んでる間に終わるライブラリのビルドなんざ
大したもんじゃないと言いたかった

ライブラリとディストリを一緒くたにするのは比較対象としてどうかという事なら、確かに不適切だった
708デフォルトの名無しさん:2013/08/03(土) 13:08:44.22
>>707
ディストリを1からコンパイルする場合はGentooが特別時間かかるってことはないよな。
なぜGentooに限定したんだろう。…w
709デフォルトの名無しさん:2013/08/03(土) 13:19:03.25
>>708
俺が知る限り、GentooとLFSは導入・保守に際して100%確実にコンパイルを要するから
710デフォルトの名無しさん:2013/08/03(土) 15:13:53.83
可変引数で質問です。
fnc ( string("aaaa"), string("bbbb") );
を実現するにはどうしたらいいですか。
711デフォルトの名無しさん:2013/08/03(土) 15:36:36.26
C++で可変引数使うなでFA
712デフォルトの名無しさん:2013/08/03(土) 15:57:05.92
>>710
まず、これは C の範疇だが、可変長引数を用いる場合には引数がいくつあるかを示す情報が、渡す引数のどこかにないといけない。

その上で、
http://codepad.org/3XTF0X0Y 警告がでるね‥‥一時オブジェクトのデストラクタがいつ走るかは関数の終わりとはかぎらないし
http://codepad.org/ew1bg0Qo やっぱりこうなるのか
http://codepad.org/jVzP0PVs でも無理せずにこうするのがわかりやすいか

可変長引数では、実体渡しや参照渡しはうまくいかないみたいだね
713デフォルトの名無しさん:2013/08/03(土) 16:05:53.31
>>712
サンクスです。
714デフォルトの名無しさん:2013/08/03(土) 16:26:26.53
>>709
gentooでもバイナリパッケージあるだろ
デフォルトでビルドしてるだけ
715デフォルトの名無しさん:2013/08/03(土) 16:37:39.97
C++11ならvariadic template(だっけ?)使えばイケるんじゃね?
俺はよく知らねーけど、詳しい人よろ
716デフォルトの名無しさん:2013/08/03(土) 16:46:15.46
素直にvector使え
717デフォルトの名無しさん:2013/08/03(土) 17:21:32.43
私はなまけもののC++初心者です。

正規表現をしたいのですが、なまけものなのでCStringを引数にしたいのですが
調べてみるとstd::tr1というのがあるということなんですが、これは標準じゃないからだめだというような
情報もみます。

初心者なので常識がわからないのですがC++で正規表現をするときはみなさんなにがいいのでしょうか
開発はVS2010で行っています

よろしくお願いします。
718デフォルトの名無しさん:2013/08/03(土) 17:26:43.09
>>716
型が同一ならそれでいいね
719デフォルトの名無しさん:2013/08/03(土) 17:43:29.33
>>717
boost::regex
720デフォルトの名無しさん:2013/08/03(土) 17:58:13.37
可変長引数ってC++の関数の多重定義と相性が悪いんじゃないのか
C++11ならコンテナ渡せばいいんじゃね
721デフォルトの名無しさん:2013/08/03(土) 23:12:22.50
>>717
Visual Studio 2010を窓から投げ捨てて
Visual Studio 2012でstd::regex
722デフォルトの名無しさん:2013/08/04(日) 03:09:03.72
>>717
Googleのre2とか
Boost.Xpressiveみたいな恐ろしいものもある
723デフォルトの名無しさん:2013/08/04(日) 05:06:33.78
>>719-722
ありがとうございます。やはり、複数あり
みなさんばらばらという感じなんですね
むずかしいな
724デフォルトの名無しさん:2013/08/04(日) 07:07:15.70
723は文盲か?
標準かどうかを気にしてるんだろ?
725デフォルトの名無しさん:2013/08/04(日) 12:19:10.72
複数あっても、自分ではひとつしか使わなければいいだろ。
微妙に検索結果がエンジンごとに変わるかもしれないが、そのときになってから別のを試したらいい。
726デフォルトの名無しさん:2013/08/04(日) 17:16:51.79
>>717
怠け者、ゆとり、低脳はC++は使わない。C#にする
727デフォルトの名無しさん:2013/08/04(日) 20:45:22.34
>>724
質問で聞いているのはその通りですが、
C++の正規表現事情についていろいろ情報がほしいと思っているのも事実です。

>>725-726
ありがとうございます。
ためになります。
728デフォルトの名無しさん:2013/08/05(月) 01:36:02.25
自分でライブラリを選べない人にC/C++を使うのはむずかしい
729デフォルトの名無しさん:2013/08/05(月) 07:14:03.42
>>722
xpressiveは知ってるけどre2ってどう恐ろしいの?
730デフォルトの名無しさん:2013/08/05(月) 11:28:01.50
再帰関数はストァックオーバーフロゥが起こる可能性があり、
厳格なProgrameでは再帰関数を使用せず、ストァック アブジェクト
等を使用するべきでしょうか?
731デフォルトの名無しさん:2013/08/05(月) 11:29:31.65
Oh, sorry miss spelling to programe for programme
732デフォルトの名無しさん:2013/08/05(月) 12:20:43.47
釣り針でかすぎw
733デフォルトの名無しさん:2013/08/05(月) 12:25:45.93
ストァック アブジェクトてなんですか
734デフォルトの名無しさん:2013/08/05(月) 12:39:13.37
>>730
再帰を禁止、という制限は結構きつい縛り、スタックがあふれにくいアルゴリズムの採用、でなんとかならないものか。
あるいはもう自分でヒープにスタック構造をつくるとか、やりたくないけど
735デフォルトの名無しさん:2013/08/05(月) 17:33:37.87
どうしたらこんな誤字になるのよ
736デフォルトの名無しさん:2013/08/05(月) 17:42:14.57
シュトロハイム少佐だろ
737デフォルトの名無しさん:2013/08/05(月) 17:51:27.40
C系言語は、もうそろそろ末尾再帰最適化に取り組むべき。
738デフォルトの名無しさん:2013/08/05(月) 17:58:49.76
自力でアンロールできないアホ用じゃなんで
739 ◆QZaw55cn4c :2013/08/05(月) 18:08:27.86
>>737
gcc ver.3 の時点で実現されているようだ手元のcygwinではそうなっている
740デフォルトの名無しさん:2013/08/05(月) 18:39:11.70
言語は、つってるのに処理系の話をはじめる(ry
741デフォルトの名無しさん:2013/08/05(月) 19:04:43.13
最下層のゴミクズがエラソーに末尾再帰語ってるつもりがやはり理解できてねー。WWWW
炎上学習法じゃ身につかない WWWW
742デフォルトの名無しさん:2013/08/05(月) 19:38:39.15
無職のクズは何を話したとしても浅い
743デフォルトの名無しさん:2013/08/05(月) 19:45:51.94
>>740
申し訳ないが違いが分からない規格に一行「末尾再帰サポート必須ね」という記述が欲しいのか?
744デフォルトの名無しさん:2013/08/05(月) 20:00:19.51
言語に末尾再帰最適化とか言い出すバカ
745デフォルトの名無しさん:2013/08/05(月) 23:09:42.14
>>736
ドゥオォイトゥゥぬぉぉぉ(ry
746デフォルトの名無しさん:2013/08/06(火) 00:17:33.59
>>744
コンパイラと言語の違いが判るように成ったらまたおいで。
747デフォルトの名無しさん:2013/08/06(火) 05:03:37.15
>>746
あいまいな言葉で煙に巻くつもりか?
末尾再帰最適化なんて処理系という文脈以外で語れるわけねーだろ
748デフォルトの名無しさん:2013/08/06(火) 08:44:07.86
末尾再帰最適化を規格に入れろとほざく馬鹿はスタックまでも規格に持ち込むバカ
749デフォルトの名無しさん:2013/08/06(火) 10:46:14.84
 ,.――――-、
 ヽ / ̄ ̄ ̄`ヽ、
  | |  (・)。(・)|  
  | |@_,.--、_,>  
  ヽヽ___ノ  6回チェンジしたらヤクザが来たでござる
                             の巻
750デフォルトの名無しさん:2013/08/06(火) 13:21:59.05
>>747
C系以外で、規格に入れてる言語もあるじゃん。
751デフォルトの名無しさん:2013/08/06(火) 13:46:12.78
関数型言語じゃ仕様に含まれてるのが普通
752デフォルトの名無しさん:2013/08/06(火) 14:35:10.11
>>750-751
言語仕様が処理系の具体的な実装まで規定してるのか
"should"じゃなくて"must"なんだよな当然?
753デフォルトの名無しさん:2013/08/06(火) 14:46:32.21
言ってることが難しい!謝れ!!
754デフォルトの名無しさん:2013/08/06(火) 15:09:30.14
>>753
仕様書に「末尾最適化しましょうね」程度に書いてあるのと
仕様書に「末尾最適化は絶対やれ。それが要求仕様だ」と書いてあるのと
意味ちゃいまっせということ
755デフォルトの名無しさん:2013/08/06(火) 15:29:15.46
言語仕様と末尾再帰は関係ないだろ。
してもしなくても出力は一緒だ。
たとえばSTLの実装は、中身がどんな仕組みであっても結果が同じなら規格通りだろ。
756デフォルトの名無しさん:2013/08/06(火) 15:29:55.65
「規格合致処理系は要件Aを満たす」という箇条を列挙しているだけで、行政命令とは違うんだが
757デフォルトの名無しさん:2013/08/06(火) 15:43:35.85
>>755
普通はそう考えるよね
でも言語仕様で実装の詳細を規定していると主張する人がこのスレにはいるんだよ

隠れてないで出ておいでー
758デフォルトの名無しさん:2013/08/06(火) 16:22:02.95
いずれにせよ、C++でその手の最適化が規格化されることなんて今後も有り得ないから
759デフォルトの名無しさん:2013/08/06(火) 16:23:32.92
他の言語で「末尾最適化」を覚えた半可通が言ってみたかっただけだろ
760 ◆QZaw55cn4c :2013/08/06(火) 19:11:09.71
>>752
規格では must は使わない、かわりに shall または shall not が使われる
761デフォルトの名無しさん:2013/08/06(火) 20:02:53.52
shoud も mandate も may be もずんどこ使ってるが?
762デフォルトの名無しさん:2013/08/06(火) 20:17:29.36
763デフォルトの名無しさん:2013/08/06(火) 20:41:53.05
最下層変態ゴミクズが懲りずに知ったかぶりしてるのか?
764デフォルトの名無しさん:2013/08/06(火) 20:43:58.27
関数型言語は基本的にループを再帰で実装するので
末尾再帰を仕様に入れざるを得ない
765デフォルトの名無しさん:2013/08/07(水) 00:59:07.87
>>757
>でも言語仕様で実装の詳細を規定していると主張する人がこのスレにはいるんだよ
誰と戦ってるんだ?
766デフォルトの名無しさん:2013/08/07(水) 01:01:28.24
>>764
関数型だと写像が基本になるから、再帰は必然だな。
767デフォルトの名無しさん:2013/08/07(水) 01:16:10.24
最適化の話をしているのかな?
768 ◆QZaw55cn4c :2013/08/07(水) 05:11:19.14
>>761
should/may be には強制の意味はないね

ISO/IEC9899:1999 4.1
In this International Standard, ‘‘shall’’ is to be interpreted as a requirement on an
implementation or on a program; conversely, ‘‘shall not’’ is to be interpreted as a
prohibition.
ま、これは用語統一の章だったから must で統一するんだったらそれはあり、ではあるけどね

>>762
ふむ、scheme R6RS では末尾再帰を適切に処理するのは must なんだね、それにしても R5RS より分量増えてないかい?追いかけてないのでよくわからないけど

>>763
お前にはついていけない世界だ
769デフォルトの名無しさん:2013/08/07(水) 06:49:04.05
ばかめ、mustかshouldかと問われたらRFC2119での定義に決まってるだろ。
最下層変態ゴミクズは引っ込んで露

> ふむ、scheme R6RS では末尾再帰を適切に処理するのは must なんだね、
これもscheme学んだ事があれば知ってて当たり前の常識以前
これでlisp/schemeの人を自称できちゃうなんて、確かについていけない世界だ WWWWWWW

http://toro.2ch.net/test/read.cgi/tech/1370255305/612
>関数型言語(わたしゃ lisp/scheme の人)で
770 ◆QZaw55cn4c :2013/08/07(水) 08:14:31.59
>>769
今は must/must not か shall/shall not の話ね
771 ◆QZaw55cn4c :2013/08/07(水) 08:18:19.14
>>769
http://toro.2ch.net/test/read.cgi/tech/1370255305/612
>関数型言語(わたしゃ lisp/scheme の人)で

それ俺じゃない、途中から便乗したのは事実だが
772デフォルトの名無しさん:2013/08/07(水) 08:47:12.40
>>752
> "should"じゃなくて"must"なんだよな当然?

>>760
>>752
>規格では must は使わない、かわりに shall または shall not が使われる
773デフォルトの名無しさん:2013/08/07(水) 08:52:22.66
>>771
あっそ。schemeも学んだ事無くて、末尾再帰の話題で知ったかしてるのか。
確かに理解できねー WWWW
774デフォルトの名無しさん:2013/08/07(水) 12:27:58.94
スレタイは相談室、しかしあるのは知識自慢ばかりなり
775デフォルトの名無しさん:2013/08/07(水) 12:30:40.92
理系の童貞学生にありがちな性質
776デフォルトの名無しさん:2013/08/07(水) 12:42:26.32
スキームといったら普通代数幾何学だろ。
高校生ならハーツホーンくらい読んで当たり前だろ。
777デフォルトの名無しさん:2013/08/07(水) 12:47:07.00
戦後"スキーム"のほうが普通。
778デフォルトの名無しさん:2013/08/07(水) 18:42:36.35
ディレクトリ探索のwindows用opendirの決定版がないので自作するか。
いくつか試してみたけど、30000文字超のパスに対応しているのがない。
前に自作したけどど無くなった。
今度はネット上に投稿しておこう。
ネット上のコード管理のサイトをつかった経験がないけど登録・操作が簡単で数年は消えないのはどこ。
779デフォルトの名無しさん:2013/08/07(水) 18:48:03.06
githubでいいだろ
780デフォルトの名無しさん:2013/08/07(水) 18:49:21.67
サンクス。そこにしてみる。
781 ◆QZaw55cn4c :2013/08/07(水) 18:49:23.85
>>776
ピレネーに隠棲してるんだって生きてるのか?
782デフォルトの名無しさん:2013/08/09(金) 17:26:16.49
構造体の配列の一番目をnullにしたいんですけど、0で初期化って使用出来ますか?

struct SEmployee{
string name;
int Tell;
};

enum{
EMPTY,
YAMADA_ID,
TANAKA_ID,
SIZE
}

const SEmployee Employees[SIZE]{
0,
{"YAMADA",08033331111},
{"YANAKA",09022224444}
}
783デフォルトの名無しさん:2013/08/09(金) 17:43:08.05
>>782
nullにしたいってのがよく判らんが、0 じゃなくて{"", 0}だろ。
784デフォルトの名無しさん:2013/08/09(金) 17:45:13.24
C++にnullなんてありません
785デフォルトの名無しさん:2013/08/09(金) 17:53:55.07
>>783
それしかありませんか、EMPTYという役割なのに適当な値を入れるのに抵抗が
786デフォルトの名無しさん:2013/08/09(金) 17:55:33.33
boost::optional<string> name にでもするか
787デフォルトの名無しさん:2013/08/09(金) 21:57:00.81
C++には何でもある。NULLクリア、NULL terminate、NULL pointer
788デフォルトの名無しさん:2013/08/09(金) 22:08:11.51
std::listで10番目の要素が欲しい!ってなったときどうすれば参照できるでしょうか?

auto it = hoge.begin();
for(int i;i<SelectNum;i++){
it++;
}
return it;
とループさせないとけないのか、
it+=10とかでもいいのか・・・


あとメモリ上にバラバラに配置されてる要素をなんでインクリメントで参照できるんですか?
※listというのはポインタ結合だと聞きました
789デフォルトの名無しさん:2013/08/09(金) 22:41:58.70
std::advance

逆に考えるんだ
バラバラだからインクリメントしていくしかないんだと
790デフォルトの名無しさん:2013/08/09(金) 22:53:44.78
>>788
そりゃlistはランダムアクセスに向いてないだけだ。
それとイテレータのインクリメントは結合を手繰っていく作業だ。
791デフォルトの名無しさん:2013/08/09(金) 22:57:04.35
XP、7(32bit/64bit)全対応のプログラムの作り方が書いてある本かサイトを教えて下さい
それぞれXP環境でVC++2008でXP専用ソフト、
7(64bit)環境でVC++2012で7専用ソフトは作れます
792デフォルトの名無しさん:2013/08/09(金) 23:02:08.64
構造体ってクラスみたいにnew演算子で、スコープを無視したインスタンスを作成できませんか?
793デフォルトの名無しさん:2013/08/09(金) 23:04:30.78
>>792
できますよ
794デフォルトの名無しさん:2013/08/10(土) 11:49:34.91
>>788-789
C++11 なら auto it = std::next(hoge.begin(), 10) でいけるよ。
795デフォルトの名無しさん:2013/08/10(土) 12:00:44.80
>>794
それって結局手繰ってるだけじゃないの?
796デフォルトの名無しさん:2013/08/10(土) 12:13:49.35
>>795
結局手繰ってるだけだよ。記述がちょっと簡単になるだけの話。
797デフォルトの名無しさん:2013/08/10(土) 12:21:47.37
結局、とか言い出すとSTLさえ使えなくなるからやめろ
798デフォルトの名無しさん:2013/08/10(土) 15:38:45.08
その結局を理解してないなら使わない方が良いけどな
799デフォルトの名無しさん:2013/08/11(日) 12:19:55.01
>>792
メンバのデフォルトがpublicかprivateかの違いのみ
c++ではstructとclassはそこ以外まったくおなじもの
800デフォルトの名無しさん:2013/08/11(日) 12:21:31.29
>>788
単方向イテレーター
双方向イテレーター
ランダムアクセスイテレーター
という3種類がある
これらを調べればわかるよ
801デフォルトの名無しさん:2013/08/11(日) 12:37:41.97
今のイテレータの分類てなんか間違ってるよなあれ
なぜあんな仕様にしたんだ
802デフォルトの名無しさん:2013/08/11(日) 14:22:39.88
疑問を感じたことが全くないが
たとえばどんなところ?
803デフォルトの名無しさん:2013/08/11(日) 14:46:16.87
>>799
アクセス指定なしで継承した時に
structはpublic継承、classはprivate継承になるという違いもある
804デフォルトの名無しさん:2013/08/11(日) 14:50:41.71
>>802
http://www.boost.org/doc/libs/1_54_0/libs/multi_array/doc/iterator_categories.html
> The standard iterator categories and requirements are flawed because they use a single
> hierarchy of requirements to address two orthogonal issues: iterator traversal and dereference
> return type.
805デフォルトの名無しさん:2013/08/11(日) 15:02:07.66
>>804
日本語でおk
806デフォルトの名無しさん:2013/08/11(日) 15:22:18.61
807デフォルトの名無しさん:2013/08/11(日) 15:35:33.03
鈍いなあ、自分の言葉で語れつってんだよ
808デフォルトの名無しさん:2013/08/11(日) 15:37:03.33
そして次はソースを寄越せと言われる
809デフォルトの名無しさん:2013/08/11(日) 15:38:34.06
ドキュメントの再作成は無駄かつ情報伝達エラーの原因になるから悪手
良く管理されたプロジェクトはドキュメントが最小限である
810デフォルトの名無しさん:2013/08/11(日) 15:39:11.37
自分の言葉で語れないやつにそんな要求しないよ、それ以前だし
811デフォルトの名無しさん:2013/08/11(日) 15:39:36.08
ドキュメントの再作成は無駄かつ情報伝達エラーの原因になるから悪手
良く管理されたプロジェクトはドキュメントが最小限である
812デフォルトの名無しさん:2013/08/11(日) 15:40:29.81
>>807は三流エンジニア
直ちに崩壊せよ
813デフォルトの名無しさん:2013/08/11(日) 15:42:34.50
イテレータの分類は間違っている、という主張に再作成もくそもあるか
再検証の可能性を与えることは、まず自らの主張を明らかにしてからの問題だ

# こいつ引用と剽窃の違いも知らないんじゃないか
814デフォルトの名無しさん:2013/08/11(日) 15:44:53.10
>>802
経験なさ過ぎわろた
815デフォルトの名無しさん:2013/08/11(日) 15:47:41.31
>>814
内容のなさ過ぎを笑われている自らの立場をまず自覚しろ
816デフォルトの名無しさん:2013/08/11(日) 15:59:31.01
他人の文章の引用しただけで意見だと言いたいのかね。
本当にその意見に同意するなら、「なんか変」どころじゃないだろう。
817デフォルトの名無しさん:2013/08/11(日) 16:12:38.03
ITスーパーパワー国の日本では糞な標準のイテレータなんてあんまり使っていないだろ?
818デフォルトの名無しさん:2013/08/11(日) 16:14:11.32
イテレータの分類がおかしいのは多くのC++プログラマの知るところだが、>801はなぜそんな
仕様になってしまったのかということを聞いている。

その前におかしいのはどこかという、本題以前の質問がはさまれたので、リンクを貼ってくれた
人がいる。

そしたら、何故か本題以前の質問をしたやつが偉そうに文句をタレはじめた。←今ここ。
819デフォルトの名無しさん:2013/08/11(日) 16:29:22.64
「多くの」だの「偉そう」だのという主観には興味がない
誰にでも同じ解釈ができる基準があるなら言ってみな

少なくとも、俺はおかしいとは思っていないC++使いだ

「おかしい」とは知ることではなく主張することだ
数学の証明とは違う
820デフォルトの名無しさん:2013/08/11(日) 16:29:29.07
つまり本題以前の質問したカスが爆発すればみんな幸せなんだな
821デフォルトの名無しさん:2013/08/11(日) 16:30:35.17
分類のどこがオカシイんだよ。そんな話は聞いたことがない。
どう分類するのが正しいんだよ。
822デフォルトの名無しさん:2013/08/11(日) 16:30:52.58
>>819
臭いです消えてください
823デフォルトの名無しさん:2013/08/11(日) 16:35:08.64
>>821
>どう分類するのが正しいんだよ。
低脳ドカタじゃ答えるのは無理だ。この板に答えられる奴なんていない
824デフォルトの名無しさん:2013/08/11(日) 16:37:25.16
>>823
それは「早まった一般化」という誤謬だ
825デフォルトの名無しさん:2013/08/11(日) 16:43:28.78
本題に戻るとだな
http://www.stlport.org/resources/StepanovUSA.html
そもそも作った本人が2つを混ぜた物だと言ってる。
826デフォルトの名無しさん:2013/08/11(日) 16:49:35.68
混ぜるだけで「おかしい」のか?
827デフォルトの名無しさん:2013/08/11(日) 16:57:30.12
>>826
分類はおかしくなるだろ
りんごとみかんを混ぜてりんごと呼んだら分類はおかしいよな
828デフォルトの名無しさん:2013/08/11(日) 16:59:32.82
本来明確に異なる別々の機能なのに、
片方の機能名だけでもう一方を分類しているのはおかしいだろうな。
829デフォルトの名無しさん:2013/08/11(日) 17:03:10.01
>>827
いや全然わかんない
そもそも「りんご」にたとえているものは何だ?
仮に逆進イテレータだったとして、なぜりんごにたとえる必要があるんだ?
830デフォルトの名無しさん:2013/08/11(日) 17:04:15.52
で、また本題に戻るとだな、
iteratorの変な分類の元凶はA. Stepanovという事だ。
831デフォルトの名無しさん:2013/08/11(日) 17:05:50.50
2つの理論を統合したらおかしくなるんだったら
相対論的量子力学とかもおかしいのか。
832デフォルトの名無しさん:2013/08/11(日) 17:11:21.50
>>831
> 本来明確に異なる別々の機能なのに

読めますか?
両者が重なり合っているのとは意味が違うんですよ。バカ
833デフォルトの名無しさん:2013/08/11(日) 17:13:12.45
はあ・・
異なる2つの混ざり物を一方で分類してるからおかしいと言ってるのに、
なんで似た2つを統合する話になるんだ。
834デフォルトの名無しさん:2013/08/11(日) 17:14:43.33
さっぱり具体性を帯びてこないな
もともと存在しない答えを執拗に尋問しても無駄か
835デフォルトの名無しさん:2013/08/11(日) 17:27:42.25
自分の言葉とやらで、おかしいことについての内容は十分に語った。
具体的な2機能については>>804の引用に明確に書いてある。
何が不満なんだ?
836デフォルトの名無しさん:2013/08/11(日) 17:30:49.82
日本語で言うことすらできないことはわかった
誤訳を笑われたくないんだよな
837デフォルトの名無しさん:2013/08/11(日) 17:46:37.53
いえ全然。
アホな人なんだなあ、と思ってるだけですよ。
838 ◆QZschizo.ptH :2013/08/11(日) 18:08:59.46
一時恥をさらそうとも長い目でみれば利得は多々あるというのに匿名板でまで虚勢を張るというのも
839デフォルトの名無しさん:2013/08/11(日) 18:30:20.05
>>837
素直にどう分類するかを具体的に列挙すれば済むのになんでそうしない?
そうしないとageが暴れるだけだろ
840デフォルトの名無しさん:2013/08/11(日) 18:38:35.94
煽れば情報が手に入ると思ってる奴だと踏んでるから。
841デフォルトの名無しさん:2013/08/11(日) 18:57:22.34
>>840
なら、スルーすればいいだけ
842デフォルトの名無しさん:2013/08/11(日) 19:12:01.29
また炎上学習法か
843デフォルトの名無しさん:2013/08/11(日) 19:16:16.18
>>840
低脳はスルーなんて高等なことができるわけない
不可能なことを要求するな。スルーできないような低脳が火に油を注いで荒れる
844デフォルトの名無しさん:2013/08/11(日) 19:48:12.47
便乗で煽りはじめたぞこいつ
845デフォルトの名無しさん:2013/08/11(日) 20:38:53.93
846デフォルトの名無しさん:2013/08/11(日) 20:42:00.58
>>845
とてもわかりやすいリンクだね。
847デフォルトの名無しさん:2013/08/11(日) 20:58:44.07
>>845
コンパイラ自体を開発するのでなければ関係のない話題だな。
プログラマは既に完成されてるコンパイラをいじくるだけでどう分類されようが関係ない。
848デフォルトの名無しさん:2013/08/11(日) 21:59:15.69
お前がそう思(ry
849デフォルトの名無しさん:2013/08/12(月) 19:30:53.22
class DECLSPEC CSound : public CGameObject
{
private:
/* 省略 */

// 新規スレッドに用いる関数
static DWORD WINAPI NotifyFunction(LPVOID param);
};
出典はこちらのPLAY.h
http://www.tnksoft.com/reading/classgame/engine/03/032.php

ここのDECLSPECはどういう意味なのでしょうか?
これを書くとビルド時CSOUNDクラスが識別されずエラーになります。助けて。
error C2470: 'CSound' : 関数定義のようですが、パラメータ リストがありません。外見上の本体をスキップします。
850デフォルトの名無しさん:2013/08/12(月) 19:33:48.34
dllとして利用できるようになる
851デフォルトの名無しさん:2013/08/12(月) 19:43:33.14
>>850
dllとして利用しないのにDECLSPECを付けていると、こいつのせいでエラーになりますか?
852デフォルトの名無しさん:2013/08/12(月) 20:06:42.13
DLLは__declspec(dllexport)とかの指定だ。
DECLSPECはそのページの作者が定めた語で、予約語とか関数とか一般的なマクロではないだろ。
853デフォルトの名無しさん:2013/08/12(月) 20:10:23.92
COMでググればシアわせになれる
854デフォルトの名無しさん:2013/08/12(月) 20:14:47.53
TNKソフトウェア - 36:ライブラリにしてみよう
 続いて、DLLに出力したいクラスすべてに「DECLSPEC」を埋め込みます。

http://www.tnksoft.com/reading/classgame/engine/03/036.php
8552ch批判要望板からの代行:2013/08/12(月) 20:45:41.24
>>852>>854
ありがとうございます。
納得しました。
856デフォルトの名無しさん:2013/08/13(火) 10:23:28.50
C++03以降の、std:: の定石がオンラインで読めるおすすめおしえれ
<algorithm>をはじめ、使いこなしてないヘッダだらけになって内心あせってる

アマグラマ。技量レベルは、template が一応アレルギーなく読める程度
lambda? なにそれおいしそう。STL? 汗だくの俺には過ぎた代物。
857デフォルトの名無しさん:2013/08/13(火) 11:56:46.35
858デフォルトの名無しさん:2013/08/13(火) 20:16:22.97
「declspec」は拡張属性構文全般のキーワードだっていうのに、dllimportとdllexportだけを使い分けるマクロにDECLSPECなんて命名するとか頭オカシイ。

uuid:クラスをDLLに…ってそれCOMで、COM用のdeclspec
property:同上、ゲッタ、セッタを付けれる
thread:お手軽スレッドローカル
allocate:データセグメント指定
naked:プロローグ・エピローグコードの削除。インラインアセンブリとか書くなら結構便利に使う

自分はnakedをよく使うんでdeclspecって言うとnakedを連想するけど、だからってnakedをdeclspec呼ばわりしたいとは思わない。
859デフォルトの名無しさん:2013/08/14(水) 03:05:46.99
C++ではmain関数から実行されるというのは本当なのでしょうか?

http://ideone.com/YbMnV7

このようなコードを組んでみたところ、
main関数から実行されていないことがわかります
これについてわかる方、説明してください
860デフォルトの名無しさん:2013/08/14(水) 03:15:15.17
グローバル変数のコンストラクタはmain関数がよばれる前によばれるだけ
861デフォルトの名無しさん:2013/08/14(水) 03:34:37.88
>>860
は?グローバル変数?
それが説明?

「よばれるだけ」←これは実行結果を見ればわかります
「よばれるだけ = main関数から実行されていないことがわかります」
それを説明して欲しいのが質問内容です
質問の趣旨を理解しろ
862デフォルトの名無しさん:2013/08/14(水) 03:37:30.88
規格読めヴァカ
863デフォルトの名無しさん:2013/08/14(水) 04:08:04.19
main関数から実行が嘘てことだよヴァカ
864デフォルトの名無しさん:2013/08/14(水) 04:30:43.89
お前の勝手な妄想
865デフォルトの名無しさん:2013/08/14(水) 07:19:43.42
説明も何も>>860が全てだろ
866デフォルトの名無しさん:2013/08/14(水) 07:29:00.36
>>861
実行の定義を明確にしたらいいだけ。main関数から実行されるとしたのは実行の意味のなかに初期化は入ってなかった
のではないかな?それに対して初期化を実行するのだから初期化が先だというのならば実行の定義が違うというだけ。
867デフォルトの名無しさん:2013/08/14(水) 08:02:47.89
質問「C++ではmain関数から実行されるというのは本当なのでしょうか?」
返答「グローバル変数のコンストラクタはmain関数がよばれる前によばれる」

このやり取りのどこに不明瞭な点があるんだろうか。

>>861
お前にC++は向いてない。
PHPでも使っとけ。その方が幸せになれるから。
868デフォルトの名無しさん:2013/08/14(水) 08:18:56.08
アスペが聞いているのは「本当」か「嘘」か。
「嘘」以上の事を長々と解説したお前の負け。
869デフォルトの名無しさん:2013/08/14(水) 08:21:17.76
>>868
「本当」か「嘘」か自分で判定できないのなら質問者の負けでしょ。質問の答えを得られなかったわけで。
逆に「本当」か「嘘」かを自分で判定できたのなら質問者の勝ち。そして回答者の負けではない。

以上証明完了。
870デフォルトの名無しさん:2013/08/14(水) 08:23:22.69
グローバル変数のコンストラクタからexit()呼んだらどうなるの?
871デフォルトの名無しさん:2013/08/14(水) 08:24:39.84
>>870
( ´,_ゝ`)プッ
872デフォルトの名無しさん:2013/08/14(水) 08:34:55.86
>>870
( ´,_ゝ`)プッ

正答出来なかった顕示くん乙
873デフォルトの名無しさん:2013/08/14(水) 08:36:31.56
変な初心者だな
最初から全てを知ろうとか己の傲慢だぞ
874デフォルトの名無しさん:2013/08/14(水) 09:24:59.30
>>865
いや、そんなことソースを見て
実行結果を見れば誰でもわかるじゃないですか?
その結果に疑問を感じたから質問したのでしょ?

質問の仕方が悪かった
頭の悪い人のために、分かり易く質問する
なぜ、グローバル変数のコンストラクタはmain関数がよばれる前によばれるのか?
これを説明できる人がいたらお願います
875デフォルトの名無しさん:2013/08/14(水) 09:32:20.66
>>859
>C++ではmain関数から実行されるというのは本当なのでしょうか?

実行の定義次第で嘘にも本当にもなる。
876デフォルトの名無しさん:2013/08/14(水) 09:34:24.79
>>874
頭の悪い人とは誰のこと?
877デフォルトの名無しさん:2013/08/14(水) 09:35:06.40
>>874
そういう規約だからじゃねーの(適当)
878861:2013/08/14(水) 09:35:06.68
>>875
俺はゼロクリアが影響してるのかな?と思ったのだが
それが影響してるのかな?
879デフォルトの名無しさん:2013/08/14(水) 09:36:06.30
( ´,_ゝ`)

>>874
Q. なぜ、グローバル変数のコンストラクタはmain関数がよばれる前によばれるのか?
A. C++の仕様でそう定められているから

Q. なぜ、C++の仕様でそう定められているのか?
A. 知るか。ストラウストラップに聞け
880デフォルトの名無しさん:2013/08/14(水) 09:37:18.85
そもそもmain関数より後だったらmain関数でグローバル変数使えないじゃん
881デフォルトの名無しさん:2013/08/14(水) 09:50:28.20
ワロタwよく居るよ
説明されてもわからない場合に説明の仕方が悪いとか説明する人が
頭が悪いからであって決して自分の理解力が足りないからではないと
頑ななんだよな。どうやって勉強していくのだろう。
882デフォルトの名無しさん:2013/08/14(水) 10:10:06.39
>>881
http://ideone.com/M2F4Cd
では、これは説明できますか?

オブジェクトをmain関数の後で作成しています
ですが、実行結果はどうでしょう?おかしいですね
883デフォルトの名無しさん:2013/08/14(水) 10:10:12.62
そりゃグローバル変数なんだから使う前に初期化されてないと困るだろ
ちょっと考えればわかることがわからないとかアホなんだな
884デフォルトの名無しさん:2013/08/14(水) 10:11:55.95
>>882
ああわかったお前スクリプトからやってきたんだな
だから
>オブジェクトをmain関数の後で作成しています
なんてアホなことを言い出すんだ
885デフォルトの名無しさん:2013/08/14(水) 10:18:47.19
>>882
さすがにそれはないわー(´・ω・`)
886デフォルトの名無しさん:2013/08/14(水) 10:19:19.11
きっと最低限の検索とコピペだけしかできないんだよ
887デフォルトの名無しさん:2013/08/14(水) 10:20:08.93
>>883
>そりゃグローバル変数なんだから使う前に初期化されてないと困るだろ
グローバル変数など、そもそも使ってはいないのですが、
そういう突っ込み合戦は、この際、どうでもいいとして
実行結果のみに疑問を感じてください

普通は、こういうオブジェクト作成はしないものですが、
あえてmain関数の外のしかも、ソースの最後にオブジェクトを作成してクラスを呼び出しています
ですが、結果はクラスの方が先に表示されている
888デフォルトの名無しさん:2013/08/14(水) 10:21:46.56
>>887
釣りだよね?
889デフォルトの名無しさん:2013/08/14(水) 10:23:34.69
まさかC++やろうとしているのにC言語理解していないとかは無いよね?
890デフォルトの名無しさん:2013/08/14(水) 10:24:31.71
もしかしてグローバル変数はintしか存在しないとか言うんじゃ
891デフォルトの名無しさん:2013/08/14(水) 10:25:09.03
これは簡単に説明できるようなことではないと思います
C++をかなり熟知しているレベルでないと解けないレベルだと思います
難易度強の質問だと思ってください

なので、無理に触れる必要はありません
解かる人だけ、この話題に触れてください
892デフォルトの名無しさん:2013/08/14(水) 10:25:08.99
>>887
リンカさんはそこまで頭良くないんだよ
許してやんなよ(´・ω・`)
893デフォルトの名無しさん:2013/08/14(水) 10:25:45.23
C言語を知らなかったとしても、高校生以上の思考力があれば実行結果から仕様を類推することはできるだろうに。
「プログラムは上から順番に実行される!」と思ってあるあたりスクリプト言語出身者なのは間違いないだろう。
894デフォルトの名無しさん:2013/08/14(水) 10:28:01.41
笑ったら負け
ってやつだよね?
笑うなよニヤニヤしても負けだよ
895デフォルトの名無しさん:2013/08/14(水) 10:31:33.41
>>891
いや、コンパイラとインタプリタのごく基本的な違いなんだが。
「世界でいちばん簡単なC言語のe本」の第一章で説明されてることだ。

つまり君の質問は「世界でいちばん簡単なC言語のe本」の第一章レベルってことさ。
みんなに笑われる理由は理解できたか?
896デフォルトの名無しさん:2013/08/14(水) 10:46:08.29
グローバルスコープのオブジェクト
ブロックスコープのstaticなオブジェクト
ブロックスコープのstaticでないオブジェクト
のコンストラクタを説明せよ、

ならば情報系学部のレポートの課題にはなるが、>>891は公立中学のパソコンクラブの勉強会でやるレベル
897デフォルトの名無しさん:2013/08/14(水) 11:00:26.58
>>896
もういいわ・・・。

非局所オブジェクトの初期化や局所静的オブジェクト
ストリーム、jis x3014の自立処理系や
フリースタンディング環境あたりの会話を期待していたのだが

こんな低レベルな人しかいないところで
こんな話題を振った俺が愚かでした・・・
898デフォルトの名無しさん:2013/08/14(水) 11:02:30.93
次元が違い過ぎる話題を振ると
こういうことになるというわけですね
勉強になりました
899デフォルトの名無しさん:2013/08/14(水) 11:09:16.02
下らん釣りだったな…
900デフォルトの名無しさん:2013/08/14(水) 11:09:57.68
今北

C++以前に、Cの常識だろ
そもそも呼ばれるのが_main かって?Windowsなら、_DllMain@12 かもしらんだろう
実行ファイルのエントリポイントに飛ぶ以前に、DLLが実行されることまで意識していい

C/C++erである以上、常に、吐き出されるバイナリは意識するべきだと思うんだ
エントリポイントは自分で指定して、自分で処理したまえ
処理系に任せるのは自由だが、使ってるCRTの実装くらい目を通すべき
901デフォルトの名無しさん:2013/08/14(水) 11:10:36.59
負けたw
902デフォルトの名無しさん:2013/08/14(水) 11:24:46.61
>>882
頼むから、釣りだったと言ってくれ (w
903デフォルトの名無しさん:2013/08/14(水) 11:26:59.66
>>894
大負けしたことを、告白せざるを得ないな
904デフォルトの名無しさん:2013/08/14(水) 12:13:41.50
>>882
main関数のあと…?
グローバルでTESTオブジェクト作ってるんだから、そっちが先にインスタンス化されてコンストラクタが呼ばれる
それらが終わってからmainだから、なにもおかしくないと思うんだが…
905デフォルトの名無しさん:2013/08/14(水) 12:35:07.08
>>904
乗り遅れはそんな当たり前のレスではダメ
もっとひねったレスをするように
906デフォルトの名無しさん:2013/08/14(水) 12:39:41.43
間違えてC言語スレで質問してるし本当に釣りじゃないんじゃ。
でもこれ頑張って専門用語持ち出してきましたって演出にも見える。
中身の程度が低すぎるけど・・・。
907デフォルトの名無しさん:2013/08/14(水) 12:40:32.37
>>905
そうだな。乗り遅れすぎの上に空気読めない痛いレスにワロタだよな
ドカタは状況把握なんてできない底辺だからな
908デフォルトの名無しさん:2013/08/14(水) 12:57:30.90
本当に空気読め無い人がなんか言ってると全然ワロエナイ。
909デフォルトの名無しさん:2013/08/14(水) 13:00:49.16
なんか異常にのびてると思ったら、キチガイが湧いて暴れていたのか
910デフォルトの名無しさん:2013/08/14(水) 18:55:32.07
サブクラスで受け取った引数を加工してからスーパークラスへ渡したいんですが
スーパークラスのコンストラクタへ引数を渡す手段はメンバイニシャライザ以外にありませんか?

あとサブクラスのコンストラクタから明示的にスーパークラスのコンストラクタを呼び出したときに
サブクラスのコンストラクタが終わった直後にスーパークラスのデストラクタが働いたんですがどういうことですか?
911デフォルトの名無しさん:2013/08/14(水) 19:11:48.19
class sub
{
sub()

};
912デフォルトの名無しさん:2013/08/14(水) 22:00:59.26
>>882
いや、正直この発想はなかった
冷静にいえば、慣習に背く「わかりにくい」コードだが、発想の転換と言えなくはない

後輩か誰かを釣るのに使おうwww
913デフォルトの名無しさん:2013/08/14(水) 22:05:52.54
複数のファイルをコンパイルするときは初期化順序把握してないとトラブル起こすっしょ
914デフォルトの名無しさん:2013/08/14(水) 22:11:27.05
>>910
>メンバイニシャライザ以外にありませんか?
はい

>どういうことですか?
見間違えたんだろ
915 ◆QZschizo.ptH :2013/08/14(水) 22:15:06.72
>>882
とっても面白いです!
916デフォルトの名無しさん:2013/08/14(水) 22:17:34.32
何が「慣習」で、あれのどこが「発想の転換」なのかと
アホか
917デフォルトの名無しさん:2013/08/14(水) 22:21:05.75
実は>>916>>912に釣られているということなのか・・・?
918デフォルトの名無しさん:2013/08/14(水) 22:22:50.94
知らねーよ
919デフォルトの名無しさん:2013/08/14(水) 22:47:04.27
920デフォルトの名無しさん:2013/08/14(水) 23:21:25.34
↑これなんで?
921デフォルトの名無しさん:2013/08/14(水) 23:22:58.70
Sub::Sub(int num)
{
Base::Base(num + 77);
}
やっぱこのパターンかよ!
922デフォルトの名無しさん:2013/08/14(水) 23:25:04.66
>Base::Base(num + 77);
Javaプログラマとかがやりがちだが
C++では、これは一時オブジェクトを作って捨てているだけ
923デフォルトの名無しさん:2013/08/14(水) 23:25:08.37
そう書いてるじゃねえか
924デフォルトの名無しさん:2013/08/15(木) 00:06:41.31
>>922
ありがとうございます。
このタイミングで一時オブジェクトが作られることにはどういった都合や利点があるのですか?
925デフォルトの名無しさん:2013/08/15(木) 00:31:57.21
いや都合とか利点じゃなくて、あなたがそう書いたからそうなってるだけ
926デフォルトの名無しさん:2013/08/15(木) 00:44:41.92
>>925
この仕様が何らかの実用的な用途を想定して設計されたものなのか、
さる密接な別の仕様との整合性を図るためにやむなく生じたものなのか、ご存知ですか?
927デフォルトの名無しさん:2013/08/15(木) 00:49:11.53
ムーブといってだな・・・
928デフォルトの名無しさん:2013/08/15(木) 00:53:15.74
サブクラスないでベースクラス作れないと困ることもあろう
929デフォルトの名無しさん:2013/08/15(木) 01:11:15.75
>>928
どういうことですか?
単にサブクラス内でベースクラスをnewする場合と違いますか?
930デフォルトの名無しさん:2013/08/15(木) 01:23:57.85
>>926
クラス名(引数) で一時オブジェクトを作れる仕様がある。
基底クラスの初期化タイミングは固定(派生クラスのメンバより前)なので、
コンストラクタ本体内のどこでも書けるこの構文を割り当てることもできない。
931デフォルトの名無しさん:2013/08/15(木) 01:26:49.70
>>929
newすることも出来るし、スタック上に作ることもできるってだけだよ
932デフォルトの名無しさん:2013/08/15(木) 01:35:15.32
やっぱID欲しいわ
933デフォルトの名無しさん:2013/08/15(木) 01:48:40.59
>>930
最初はコンストラクタも単なるメンバ関数として派生クラスから呼び出しが可能だと思っていました。
この仕様はあまり使われないのですか?

>>931
Base base = Base::Base();
このように書けるんですね。今知りました。
Base base;
でもスタック領域で実体化するにしてもこの方が早そうに見えますが。
934デフォルトの名無しさん:2013/08/15(木) 02:40:18.41
>>933
コンストラクタは単なるメンバ関数じゃない。例えば、明らかに2度呼ぶことはできない。

使い捨てのオブジェクトに名前をつけるのは面倒。
935デフォルトの名無しさん:2013/08/15(木) 04:44:53.91
936デフォルトの名無しさん:2013/08/15(木) 04:47:01.43
間違ってC言語なら俺に聞けに書いてしまったのですが、
質問というかちょっとお聞きしたいのですが、
次のコードがVSとC++Builderで結果が違うのです。

int *c=new int(100);
int x=(int)c;
delete c;
printf("%d",*(int*)x);

VSだとメモリは消えてて値が不定なんだけど、C++Builderだと100が残ったままなんです。
これBCCはちゃんとメモリ解放してるつもりなんですかね?
937デフォルトの名無しさん:2013/08/15(木) 04:54:37.32
delete後の領域なんぞ気にしちゃダメよ(´・ω・`)
938デフォルトの名無しさん:2013/08/15(木) 05:02:10.84
ちゃんと消えてるのか確認してみたら同じ値のままだったから本当に消えてるのか不安になって仕方なかったんだ(´・ω・`)
939デフォルトの名無しさん:2013/08/15(木) 05:31:12.79
実際にはすぐには消えないからそんなこと気にしてもしょうがない
940デフォルトの名無しさん:2013/08/15(木) 05:38:31.71
保障されていたものが保障されなくなっただけ
いつ書き変えられるかもしれない領域だから使ってはいけない
自動変数のポインタを返しても同じようなことが起きる
941デフォルトの名無しさん:2013/08/15(木) 07:25:10.63
>>919
http://codepad.org/383QmLeq
こう書いていれば2つ目が作られていることにも気がついたろうに

>>936
そもそもメモリは消えない
本当にレガシーなシステムでは言語のメモリ管理機構がその領域を再割当て可能として別の所に記憶するだけ
仮想メモリなシステムでもメモリ管理機構がその領域を上位のシステム(OS)に返却しない限りは大抵同じ
そして、仮想メモリなシステムでメモリ管理機構がその領域を返却してあった場合、セグメンテーション違反でプログラムが落ちる
942デフォルトの名無しさん:2013/08/15(木) 08:01:27.71
>>936
↓と同じ。 delete 後の *c の読み取りで未定義動作。何を確認してることにもならない。
int *c=new int(100);
delete c;
printf("%d",*c);
943デフォルトの名無しさん:2013/08/15(木) 08:04:59.66
>>936
メモリは解放されても、リセットされるわけじゃない
リセットされてほしければ、そのように書かなきゃいけない
リセットの必要がなければ、その分実装者の責任で省力化できるともいえる
それがCってものだろう

もしかして: 解放だけじゃなく、確実にクリアしたい?
たとえば、SecureZeroMemory ってのをぐぐってみ
944デフォルトの名無しさん:2013/08/15(木) 10:55:53.63
>>940
補償
保障
保証
使い分けられないクズは引っ込んでろ
945デフォルトの名無しさん:2013/08/15(木) 11:23:58.72
なぜおかしいのか説明できないなら情報量ゼロ
クズは引っ込んでろ
946デフォルトの名無しさん:2013/08/15(木) 11:31:06.10
みんながみんな説明できるならそれこそ情報にならないじゃないか
なかなか説明が出てこないから情報としての価値がある
947デフォルトの名無しさん:2013/08/15(木) 12:39:21.42
>>944
お前が引っ込んでいろクズ
948デフォルトの名無しさん:2013/08/15(木) 13:27:38.62
>>945
三種類あって、それを使い分けられないのはクズである
と言う情報が得られただろ

そういう事がわから無いと一生クズのままだぞ
949デフォルトの名無しさん:2013/08/15(木) 14:22:34.01
>>948
そんな事はこのスレでドヤ顔で講釈たれることじゃない
ただのIME変換ミスだろ
950デフォルトの名無しさん:2013/08/15(木) 16:01:22.69
プログラマはクズがやる底辺ドカタ職業
>>944が使い分けられるような奴は底辺職業のドカタにはいないのに。
951デフォルトの名無しさん:2013/08/15(木) 16:04:28.38
すまんこすってたい
952デフォルトの名無しさん:2013/08/15(木) 16:17:35.50
>>950
自宅警備員よりは高貴な職業だyo
953デフォルトの名無しさん:2013/08/15(木) 16:19:24.80
自宅警備員の方は高貴というより末期
954デフォルトの名無しさん:2013/08/15(木) 16:21:46.64
わから無いに突っ込んでやれよ
955デフォルトの名無しさん:2013/08/15(木) 17:03:28.68
生涯を通じての自己実現
  人生は多様であることを知る
  職業に貴賎なきことを学ぶ
  社会のため、人の為になる人生
  自分が満足できる人生
956デフォルトの名無しさん:2013/08/15(木) 17:03:48.29
打ち消しの「ない」は「無い」とは書かないよな
957デフォルトの名無しさん:2013/08/15(木) 17:05:03.30
そんなこと知ら無い
958デフォルトの名無しさん:2013/08/15(木) 17:12:31.38
日本語歴はまだ数年なので知ら無い
959デフォルトの名無しさん:2013/08/15(木) 17:15:02.16
クズはC++に関連ないことのほうがはるかに饒舌になる
おれら、やっぱクズだよな
960デフォルトの名無しさん:2013/08/15(木) 17:57:13.46
C++が好きな奴って、なんだかんだで自分で極めようという志はあるからね
質問にあがるといったら、これからC++やる奴か、
ハマってしまってはたから見たらアホみたいなとこで詰んでる奴とかか
961デフォルトの名無しさん:2013/08/15(木) 18:04:48.78
詰むところを忘れたわけじゃないからね
まともな詰みかたしてる人を見下したりはしないよ
962デフォルトの名無しさん:2013/08/15(木) 18:12:28.27
>>944
重箱の隅をつつく事でようやく低い自尊心を保てているクズ
963デフォルトの名無しさん:2013/08/15(木) 18:16:54.12
同じ屑なら叩かにゃソンソン (荒らしの論理)
964デフォルトの名無しさん:2013/08/15(木) 20:45:58.55
自宅警備保障
965デフォルトの名無しさん:2013/08/15(木) 21:43:00.96
ublas厨すぎて、push_backが必要な状況ですら、サイズ計量して詰め込む二重ループか、
ublas::vector<T, std::vector<T> >してしまいます
どなたか僕を遅延演算の輪廻から解放してください
966デフォルトの名無しさん:2013/08/15(木) 22:45:59.14
>>965
いいえこれからも奮って
テンプレートのくその山を大量生産してください
967デフォルトの名無しさん:2013/08/15(木) 23:38:36.15
初歩的な質問なんですがAクラスとそこから派生したBクラスがあってa.h a.cpp b.h b.cppがあるとします
このときb.hがa.hをインクルードするのは当然だと思いますが、ソースファイルはどうなんでしょうか?
Bクラスを使いたいときb.cppがa.cppを内包していなければ、プロジェクトがインクルードしなければならないファイルは
b.h b.cppに加えてa.cppが増えて直感的ではないように思います
しかしb.cppにa.cppをインクルードすると、BクラスだけでなくAクラスも使いたい状況で
a.h a.cpp b.h b.cppをインクルードしたときa.cppの多重定義が起こりエラーになります
b.h b.cppだけをインクルードすればいい話ですがAクラスのファイルが隠蔽されてしまってこれも直感的ではありません
968デフォルトの名無しさん:2013/08/15(木) 23:44:08.39
そもそもまずb.cppをインクルードする必要なんてないが
969デフォルトの名無しさん:2013/08/15(木) 23:48:57.23
>>968
a.cppにはa.hをインクルードしとく
b.hにはa.hだけインクルードしとく
b.cppにはb.hだけインクルードしとく

なぜそれでいいかは、
ttp://www.nitoyon.com/vc/tutorial/project/build_detail.htm
あたりを参照。
970デフォルトの名無しさん:2013/08/16(金) 00:00:56.77
あれ、VC++で外部シンボルが未解決と言われたので定義をインクルードしてないのが問題かと思ってました
971デフォルトの名無しさん:2013/08/16(金) 00:03:56.95
一回クリーンしたら動きました
なんだったんだろう
972デフォルトの名無しさん:2013/08/16(金) 00:39:44.10
>>967
>>969 のように書けば済むように、ヘッダ・実装を書き分けていけばいい
そういう考え方。
973デフォルトの名無しさん:2013/08/16(金) 01:29:50.05
荒れやすいな
974デフォルトの名無しさん:2013/08/16(金) 02:00:08.64
これを荒れと認識する人は匿名掲示板向いてないよ
TwitterやFacebookで上っ面だけ丁寧な連中と付き合った方が幸せになれるよ
975デフォルトの名無しさん:2013/08/16(金) 02:15:19.24
荒らし対策が必要だな
976デフォルトの名無しさん:2013/08/16(金) 02:51:05.84
>>974
同意
上っ面丁寧な連中の方が、ちゃんとした回答を出す
匿名なんて、ひけらかして威張りたいけど、突っ込まれてバカ認定されるのを怖がってるクズの吹き溜まり
ここも2、3冊読破した程度の学生が知識を試してんじゃないのかな、内容的に
977デフォルトの名無しさん:2013/08/16(金) 03:39:25.24
Twitterは有名ブロガーとかOSSで活躍する有名人とかが看板掲げて発言するから
そりゃあ平均レベルは高くなるよ。

問題は、見つけてもらえるか、絡んでもらえるかだなw
上手く出会えて有名人の興味を惹ければ超有用なアドバイスを貰えるけど、出会
えないとぼっちの独り言状態で激烈寂しい思いをするorz
978デフォルトの名無しさん:2013/08/16(金) 03:48:58.67
色々間違ってるぞ
979デフォルトの名無しさん:2013/08/16(金) 04:29:59.92
同じクズならクズ程でも役に立つクズがいいのは同意するが
2chもコツを掴めば欲しい情報を引き出すのは簡単だぞ
980デフォルトの名無しさん:2013/08/16(金) 11:27:33.64
コミュニティ破壊してでも情報得ようなんて言う短絡的な奴が増えたんだよ。
981デフォルトの名無しさん:2013/08/16(金) 12:46:42.15
>>974
そうだよな。ここは底辺階層向でこれが普通で荒れてはいない
類は友を呼び、底辺階層向になったって感じだろう
底辺階層向って状況認識できないから荒れている思うのかな
982デフォルトの名無しさん:2013/08/16(金) 12:51:00.48
上級者にならんがためには、上級者になる必要があるんだよな
983デフォルトの名無しさん:2013/08/16(金) 20:06:55.25
t
984デフォルトの名無しさん:2013/08/16(金) 22:42:28.98
>>979
あやふやなところをドヤ顔で書けば、間違いを指摘してくれる便利な人達がいるからな
人間やっぱ性悪なもんで、教えて下さいと言うよりも、コイツを潰したいと思わせた方が、隙の無いレスが返ってくる
985デフォルトの名無しさん:2013/08/16(金) 22:53:14.28
それって質問より難しくない?
986デフォルトの名無しさん:2013/08/17(土) 00:50:05.69
炎上学習法?
987デフォルトの名無しさん:2013/08/17(土) 01:51:03.44
板が荒れる+質問者の人格もどんどん荒んでいく
まさに黒魔術的な手法
988デフォルトの名無しさん:2013/08/17(土) 05:38:19.62
>>984
それやろうとしたら、あやふやなところ以外はちゃんと書いとかないとダメなんだが、大抵全般的にあやふやだから、全般的に突っ込まれて撃沈してるだろ (w
989デフォルトの名無しさん:2013/08/17(土) 08:57:29.06
炎上学習法は俺が最初に言い出したテクニックだから
これいじょうやるならライセンス料とるが?
990デフォルトの名無しさん:2013/08/17(土) 11:02:03.32
991デフォルトの名無しさん:2013/08/17(土) 12:02:54.41
炎上マーケティングをパクっただけだろ
992デフォルトの名無しさん:2013/08/17(土) 12:08:16.73
うめ
993 ◆QZschizo.ptH :2013/08/17(土) 12:11:02.17
>>989
俺が最初だ、この偽者めが
994デフォルトの名無しさん:2013/08/17(土) 12:29:56.84
995デフォルトの名無しさん:2013/08/17(土) 12:38:59.34
焼畑農業なんて大昔からあるだろ 原始人ども
996デフォルトの名無しさん:2013/08/17(土) 12:56:30.75
俺が最初だ
997 ◆QZschizo.ptH :2013/08/17(土) 13:20:54.05
>>996
トリップつけろ、この軟弱者卑怯者、こっちはトリップつけてコード晒してんだ、見習ってもらいたいね、氏ね
998デフォルトの名無しさん:2013/08/17(土) 13:25:20.55
猥褻物陳列罪の犯罪者が何を偉そうに
999デフォルトの名無しさん:2013/08/17(土) 13:33:02.25
1000デフォルトの名無しさん:2013/08/17(土) 13:44:28.15
>>999
こいつそのスレにも出入りしてたのか
そのスレ俺も出入りしてるから嫌な感じだわ
休日にショッピングに行ったら地元の知り合いにばったり遭遇しちゃったような気分
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。