2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 part107

1 :デフォルトの名無しさん:2013/11/19(火) 08:46:57.10
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

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

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

次期規格C++1yはこちら
C++14/C++1y
http://toro.2ch.net/test/read.cgi/tech/1382889622/

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

2 :デフォルトの名無しさん:2013/11/19(火) 09:25:20.29


3 :デフォルトの名無しさん:2013/11/19(火) 09:29:24.36
3なら>>5が3年以内に禿げる

4 :デフォルトの名無しさん:2013/11/19(火) 10:24:44.90
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

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

5 : ◆QZaw55cn4c :2013/11/19(火) 12:40:37.57
>>3
最近白髪が増えてきたが、そうか禿げるのか‥‥スッポスッポ先生にあやかれるのなら光栄だ

6 :重要:2013/11/19(火) 13:16:31.09
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

7 :デフォルトの名無しさん:2013/11/19(火) 13:18:48.11
そうhogeか

8 :デフォルトの名無しさん:2013/11/19(火) 18:07:26.07
hoge

9 :デフォルトの名無しさん:2013/11/19(火) 18:22:16.55
hoge++

10 :デフォルトの名無しさん:2013/11/19(火) 19:13:27.19
hage

11 :デフォルトの名無しさん:2013/11/19(火) 19:20:01.22
dynamic_cast<Hage>("@ノハ@");

12 :デフォルトの名無しさん:2013/11/19(火) 19:29:44.99
「実はhogehogefugafugaで」
「ナンダッテー」

13 :デフォルトの名無しさん:2013/11/19(火) 19:48:27.04
ハードタブ派がこの世から駆逐されますように…人

14 :デフォルトの名無しさん:2013/11/19(火) 20:07:13.83
還付金hoge

15 :デフォルトの名無しさん:2013/11/19(火) 20:11:08.29
ハードhage

16 :デフォルトの名無しさん:2013/11/19(火) 21:01:14.18
また釣りに来ないかな

17 :デフォルトの名無しさん:2013/11/19(火) 21:09:03.57
#include <studio.h>
main(){
printf(”konnitiwa!”);
}

なぜかエラーが出て実行できません!!!!!!何でですかね!!!???!?!?

18 :デフォルトの名無しさん:2013/11/19(火) 21:10:59.22
int main() {

19 :デフォルトの名無しさん:2013/11/19(火) 21:11:29.53
スタジオ・イオは業績不振で去年解散したじゃないか

20 :デフォルトの名無しさん:2013/11/19(火) 21:12:02.85
いお?

21 :デフォルトの名無しさん:2013/11/19(火) 21:17:09.00
#include <stupid.h>

22 :デフォルトの名無しさん:2013/11/19(火) 21:23:05.38
#define amigo friend

23 :デフォルトの名無しさん:2013/11/19(火) 21:33:32.19
社内システムを開発してるんだが、
mfcのSDIで作ってて、一つのメイン画面から20弱くらいのプログラムに遷移するようなやつで、
画面だけSDIで作ってあとは一つ一つdllにしようかと思ってたんだが、
上司がインストールとか再頒布パッケージとか嫌いみたいで、
exeだけコピーしてすぐ使えるようにしたいって言ってんだわ…。
だから.netも論外みたいな感じなんだが、UIは簡単に作りたいからmfc使えみたいな分けのわからない話なんだが
dllに小分けしようにも再頒布無しじゃmfcをスタティックリンクするしかないと思うんだけど、
そうしたらdll一つでメガ単位になるんでなんだかなぁ・・・って感じなんだが
なんかいい方法ないですか?
もういっそ1つのプロジェクトに全部詰め込むしかないかと思ってるんだけど、
ソース多くなると重くなるしメンテもめんどうだし悩んでるんだが、
みんなはどんなふうに開発してんの?
やっぱdllに小分けしてるの?

24 :デフォルトの名無しさん:2013/11/19(火) 21:34:00.76
もはやスレ違いだが、前スレ 930氏に聞きたい。

> 930 名前:デフォルトの名無しさん[] 投稿日:2013/11/19(火) 00:50:35.25
> staticにする必要ないだろ
> WM_なんちゃらって書いてるって事はメッセージループ周ってるんだろうからループスコープの外に書けばいいだけ。

ループスコープの外っていうとWinMainだと思うけど、そのなかに置いたオブジェクトをウィンドウプロシージャに
どう渡せばいいですか?
Windowsプログラムは全然シロートなんで標準的なやり方があったら教えて。

25 :重要:2013/11/19(火) 21:40:36.32
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

26 :デフォルトの名無しさん:2013/11/19(火) 21:52:41.55
hog.e

27 :デフォルトの名無しさん:2013/11/19(火) 21:57:58.50
WM_なんちゃらとか書いてるから素人だな
プロならWM_hogeと書く

おおかた、グローバル変数で渡せとか言うんだろ

28 :重要:2013/11/19(火) 21:58:41.49
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

29 :デフォルトの名無しさん:2013/11/19(火) 22:01:05.08
また荒らし始めた

30 :デフォルトの名無しさん:2013/11/19(火) 22:01:58.90
相手にするなって書いてるくせに反応しすぎだろ

31 :デフォルトの名無しさん:2013/11/19(火) 22:05:01.16
受験番号(int)と成績(double)のペアが複数あった場合、成績順に
受験番号を取り出したい。STLでさくっと頼む。
ここんとこC++やってなくてすっかり忘れてもたw
map<>にpush_back()してsort?

32 :デフォルトの名無しさん:2013/11/19(火) 22:09:07.08
成績がdouble

33 :デフォルトの名無しさん:2013/11/19(火) 22:10:18.78
別にshortでもいいけど、同じならわかりづらいかなと思って。

34 :デフォルトの名無しさん:2013/11/19(火) 22:11:56.74
vectorで十分じゃないか

35 :デフォルトの名無しさん:2013/11/19(火) 22:12:15.46
ペアって言ってんだからpair使えば

36 :デフォルトの名無しさん:2013/11/19(火) 22:14:18.52
受験者構造体を作ってそこに大小関係を定義してvectorでsortしたくなるが

37 :デフォルトの名無しさん:2013/11/19(火) 22:16:11.52
unordered_map<>::insert
make_pair
sort

38 :デフォルトの名無しさん:2013/11/19(火) 22:16:40.87
vector<pair<int, double> > hoge

39 :デフォルトの名無しさん:2013/11/19(火) 22:17:22.33
簡単にやるならmap作ってもいい、>>36の方法も良い
ttp://ideone.com/FHvDd7

40 :デフォルトの名無しさん:2013/11/19(火) 22:19:09.96
おぉ、サンクス。
しかし、そのfor文は何w 最近の仕様?

41 :デフォルトの名無しさん:2013/11/19(火) 22:19:44.50
あ、やっぱ受験者名も追加してくれ。とか言われるんだろうな

42 :デフォルトの名無しさん:2013/11/19(火) 22:21:12.71
>>41
言わないから。
しかし、emplaceってのも最近? STLに前からあった?

43 :デフォルトの名無しさん:2013/11/19(火) 22:23:06.47
うーむ、g++4.8以降くらいじゃないとサポートされてないのか。

44 :デフォルトの名無しさん:2013/11/19(火) 22:35:26.11
STLってなんですか?

45 :デフォルトの名無しさん:2013/11/19(火) 22:43:58.33
standard template libraryの略。
std::vectorなどのテンプレートクラスを集めたライブラリ。
今はC++の一部になっている

46 :デフォルトの名無しさん:2013/11/19(火) 22:46:07.12
>>39ってC99だとどう書くのが一番シンプルに済むかな。

47 :デフォルトの名無しさん:2013/11/19(火) 22:48:01.57
>>42
C++の新しい規格C++11によって言語仕様、ライブラリに多数の追加変更が発生した
このfor文はrange-based forといい、コンテナ全体を走査する事が出来る 内部的にはイテレータをbeginからendまで回している
std::map::emplaceもC++11で追加された関数で、与えられた引数からpairを構築し、コンテナに挿入する

48 :デフォルトの名無しさん:2013/11/19(火) 22:58:16.92
そのforはいただけないね。まぁ並列化を意識したのかもだけど。

49 :デフォルトの名無しさん:2013/11/19(火) 23:00:05.75
g++って最新バージョンいくつ?
最適化にも少しは力入ってるのかなぁ。

50 :デフォルトの名無しさん:2013/11/19(火) 23:16:26.52
>>24
そのループがwhile( xxx ) だとして、その直前に書けばいいだけ。
なんでわかんないの?

51 :デフォルトの名無しさん:2013/11/20(水) 00:37:39.27
>>45
>今はC++の一部になっている

どうしてこうも平然と嘘がつけるのか

52 :デフォルトの名無しさん:2013/11/20(水) 00:50:14.92
>>50
ウィンドウプロシージャやそこから呼ぶ関数にどうやってポインタ渡すかって話じゃね?

53 :デフォルトの名無しさん:2013/11/20(水) 00:52:01.60
>>51
STL以外にC++選択する理由ないだろ

54 :デフォルトの名無しさん:2013/11/20(水) 01:01:54.71
STLという言葉を使う人って頭悪そう
ということだな

55 :デフォルトの名無しさん:2013/11/20(水) 01:07:06.48
>>51
嘘じゃなかんべ、コア言語の規格票に書いてあるんだから

# 私見ながら、ライブラリは別規格とし、コア言語ではあくまで例示にとどめて欲しかった

56 :デフォルトの名無しさん:2013/11/20(水) 01:11:11.89
毎回この流れは止めて欲しい

「そんなことが規格の何ページに書いてあるのですか?」


57 :デフォルトの名無しさん:2013/11/20(水) 01:16:19.91
std::emplaceを使ってstd::mapに要素を挿入した場合とstd::pairを挿入した場合は速度違うかな?

大きなオブジェクトだとコピーしないから違いが大きくなりそうだね

58 :デフォルトの名無しさん:2013/11/20(水) 01:42:21.57
>>57
コピーコンストラクタ一回分省略できそうな気がするけど
RVO/NRVOで結局同じになるんじゃないかとか思うんだがどうなんだこれ

59 :デフォルトの名無しさん:2013/11/20(水) 01:55:38.31
C++11って最近どうなの
仕事で使ってる人いる?

60 :デフォルトの名無しさん:2013/11/20(水) 02:06:58.76
使えるときは普通に使ってる

61 :デフォルトの名無しさん:2013/11/20(水) 02:16:10.98
>>60
同じく
使うつもりだった C++11 が NG だと、割れ泣き濡れて蟹と戯る・・・て感じ

62 :デフォルトの名無しさん:2013/11/20(水) 05:25:31.19
新しい機械のコンパイラだと使えるんだけど、まだしばらくは古い機械も扱うし
使いたくても使えない感じ。あと6年くらいしたら使えるかなぁ…

63 :デフォルトの名無しさん:2013/11/20(水) 08:04:48.89
調子乗ってラムダ式よく使うけど使わない方がスッキリしてることが多い

64 :デフォルトの名無しさん:2013/11/20(水) 08:15:47.07
慣れてくるとだんだんラムダ式が長くなるよな
そして最後に()を付けてその場で実行したり

65 :デフォルトの名無しさん:2013/11/20(水) 08:17:37.11
でも確かに int speed[16] の順に int HP[16], MP[16] を並び替えるとかのとき
えっそのためだけに構造体を定義してコピーして…?って悩むことが有る
そしてその場でバブルソートを書いちゃうこともある

66 :デフォルトの名無しさん:2013/11/20(水) 08:26:13.52
emplace_back使うと速いから、

理由はemplace_backは右辺値をコンテナに直接追加するけど、
push_backやinsertは一端右辺値を作って、その右辺値をコンテナにコピーしてコピーコンストラクタを発生させるから

67 :デフォルトの名無しさん:2013/11/20(水) 09:26:08.28
>emplace_backは右辺値をコンテナに直接追加

え?

68 :デフォルトの名無しさん:2013/11/20(水) 09:39:03.46
誤 emplace_backは右辺値をコンテナに直接追加する
正 emplace_backは右辺値をコンテナに直接追加できる

69 :デフォルトの名無しさん:2013/11/20(水) 10:34:37.16
http://ideone.com/hTjhtc

これ位でも差が出るな
ちなみにムーブコンストラクタのコメントを外して有効にするとほとんどemplace()のメリットが無くなるみたい
中でバリバリにmove使ってるな

70 :デフォルトの名無しさん:2013/11/20(水) 12:02:11.20
ほー
おもろいな

71 :デフォルトの名無しさん:2013/11/20(水) 12:05:10.76
そのためのものが理屈通り動いていることの確認の
何がおもしろいのか

72 :デフォルトの名無しさん:2013/11/20(水) 12:12:28.49
KY発見

73 :デフォルトの名無しさん:2013/11/20(水) 12:46:07.63
これ位って、コピーコンストラクタで800KBをnewしてコピーするのは割と重い部類だぞ

74 :デフォルトの名無しさん:2013/11/20(水) 12:52:54.53
何をしてるのか分からない癖に口出すなよ

75 :デフォルトの名無しさん:2013/11/20(水) 12:59:20.25
74が何を言ってるのかが分からないな

76 :デフォルトの名無しさん:2013/11/20(水) 14:15:59.85
>>69
これのdist(twister)って何やってんの?
distって変数..じゃない何かなのか

&&とか、色々拡張されちゃってるんだねぇ...

77 :デフォルトの名無しさん:2013/11/20(水) 14:17:16.47
>>66
中で右辺値を追加って、どういう機構ですか?
単にpairのコピーがないから速いのだと理解してましたが.

78 :デフォルトの名無しさん:2013/11/20(水) 14:20:55.61
>>76
https://sites.google.com/site/cpprefjp/reference/random

ここの「分布生成器」って所を参照
元になる乱数がメルセンヌ・ツイスタで生成されていて(他にも何種類か用意されている)
それをどのように分布させて出力するかというアダプタのようなもの

これとchronoとか分かりにくいライブラリがC++11に追加されたけど、一度プログラムを
書いてみれば理解出来るはず

まあライブラリは使わなければC++03と大差ないのでまだいいよな

79 :デフォルトの名無しさん:2013/11/20(水) 14:28:54.01
続きはこちらで

C++14/C++1y
http://toro.2ch.net/test/read.cgi/tech/1382889622/

80 :デフォルトの名無しさん:2013/11/20(水) 14:42:34.73
最近大学でバリバリのC言語習ってるんだけどC++に慣れてると微妙な書き辛さに原辰徳だわ
特にfor分の最初でi初期化出来ないのが一番悲しい

81 :デフォルトの名無しさん:2013/11/20(水) 14:46:44.13
>>78
いや、内容的にはだいたいわかったんだけどdistってclass定義だったのか。
class templateだとか、もっとわかりやすい名前にしてほしいな。
>>80
なんだバリバリのC言語って。
Cなんて今時8bitマイコンくらいにしか用途ないんじゃないか?

82 :デフォルトの名無しさん:2013/11/20(水) 14:54:19.62
linuxもtorもバリCだろ

83 :デフォルトの名無しさん:2013/11/20(水) 14:55:36.95
>>81
>内容的にはだいたいわかったんだけどdistってclass定義だったのか。
>class templateだとか、もっとわかりやすい名前にしてほしいな。
とりあえず関数オブジェクトでググったぽうがいい。たぶん理解できてない。

84 :デフォルトの名無しさん:2013/11/20(水) 14:57:04.47
BSDなんか標準言語がCだわ

85 :デフォルトの名無しさん:2013/11/20(水) 15:21:07.42
>>83
あぁ、そんなのあったな。くらいの理解だわ。
そういう小手先系は理解するまでが面倒なので放置してるわw

86 :デフォルトの名無しさん:2013/11/20(水) 15:49:10.19
>>66
>>77ですが、やはりコピーコンストラクタは呼ばれてますね。

>>69はコピーなしにコンテナに入るから速いのではなく、
コピーが1回分減るから速いという事を確認しました。
コピーそのものは発生してます。

87 :デフォルトの名無しさん:2013/11/20(水) 17:19:52.22
>>80
>原辰徳
お前、歳いくつだよ

88 :重要:2013/11/20(水) 17:23:11.13
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

89 :デフォルトの名無しさん:2013/11/20(水) 17:45:24.18
hogeが禁止になったら次はmogeを使いましょう。

90 :デフォルトの名無しさん:2013/11/20(水) 17:50:34.43
hoge  moge
 ↓    ↓
hage  mage

91 :デフォルトの名無しさん:2013/11/20(水) 17:51:29.01
>>80
C99で

92 :デフォルトの名無しさん:2013/11/20(水) 17:52:57.98
講師の頭が固くてC89縛りなんじゃね?

93 :デフォルトの名無しさん:2013/11/20(水) 17:58:22.76
C++11はみんなバリバリ使ってるっぽいのに、C11は話題にもならんな
まあCなんて組み込みかOSカーネルくらいだし、C89で十分なんだろうけど

94 :デフォルトの名無しさん:2013/11/20(水) 18:06:37.00
まだC99すら広く受け入れられている訳ではないからな

95 :デフォルトの名無しさん:2013/11/20(水) 18:08:27.74
>>79
それはスレ違いだ

96 :デフォルトの名無しさん:2013/11/20(水) 18:13:51.34
名付ける必要のない識別子を例示する時にhoge以上に適切なメタ構文変数はありません
日本語なのでかなで「ほげ」としたいところですが、
これがサンプル中に出てくると非常に紛らわしくなります

int ほげ=10;
extern int はげ(int);
int ひげ=はげ(ほげ);

わかりにくいですね

int hoge=10;
extern int hage(int);
int hige=hage(hoge);

なんとわかりやすいのでしょう。というわけで名付ける必要のない識別子にはhogeをつかいましょう
foo, barなどいういう軟弱なメタ構文変数とちがいhogeシリーズは
hage, hige, huge, hege, hoge
と何も考えずに5種類もつかえます。 hogeを使いましょう

97 :デフォルトの名無しさん:2013/11/20(水) 18:19:19.91
hogeもいいけどhageもいいよね

98 :デフォルトの名無しさん:2013/11/20(水) 18:20:09.73
int var1 = 10;
extern int func1(int);
int var2 = func1(var1);
この方がマシ。他人に説明するのにホゲは不適切。

99 :デフォルトの名無しさん:2013/11/20(水) 18:22:08.06
hageには理解できないコードだからな

100 :デフォルトの名無しさん:2013/11/20(水) 18:23:58.39
hugeは使えない

101 :デフォルトの名無しさん:2013/11/20(水) 18:30:21.66
なんでC90でなくてC89なんだ

102 :デフォルトの名無しさん:2013/11/20(水) 19:14:50.35
F-90ではなくF-91が如し

103 :デフォルトの名無しさん:2013/11/20(水) 19:48:42.81
Toccata und Fuge

104 :デフォルトの名無しさん:2013/11/20(水) 20:08:48.85
BWV578

105 :デフォルトの名無しさん:2013/11/20(水) 20:21:56.31
VC++2008を使っており、オライリー・ジャパン社から出てる
「ゲーム開発者のためのAI入門」のサンプルを実行したら
こんなエラーが出て、実行できません

1>リンクしています...
1>LINK : fatal error LNK1104: ファイル '..\..\VC98\Lib\USER32.LIB' を開くことができません。

VC98ってなんですか?ファイル検索しても全く見当たりません

106 :デフォルトの名無しさん:2013/11/20(水) 20:26:39.87
俺が昨日掃除機かけたときに吸い込んじゃった

107 :デフォルトの名無しさん:2013/11/20(水) 21:03:26.23
>>105
VC6(1998)のような気がするが何年前の本?

108 :デフォルトの名無しさん:2013/11/20(水) 21:06:10.96
データベースからのデータの取得を主にしたクラスを作りたいと思っているのですが、
それぞれ取ってくるテーブルが違う場合、
取ってきた値群の取扱いについてアドバイスをください。
今現在、クラスを一つ作ってその中にそれぞれデータべースから
値を検索してリストで返すメソッドを作ってあります。
それぞれのメソッドには参照渡しで渡して返しているのですが、
この作りだとそもそもクラスにしないで関数でいいじゃないか?と思うんですが、
オブジェクト指向についてまだまだ勉強不足なもので、
みなさんならどういったクラス設計にしますか?

109 :デフォルトの名無しさん:2013/11/20(水) 21:11:57.57
作らないな
だってデータベースほど共通化した処理ならsqlのラッパなりなんなり腐るほどあるじゃん

110 :デフォルトの名無しさん:2013/11/20(水) 22:08:45.38
>>85
ちゃんと理解しておいた方がいいYO
なんでかっていうと多くのライブラリ関数等が「3番目の引数に関数オブジェクト(/ファンクタ)を入れてね」
って言ってるからさ。

111 :デフォルトの名無しさん:2013/11/20(水) 22:25:07.15
main.cppで
sys.title = TRUE;
sys.wait = FALSE;
sys.scene = 1;

main.hで
class System{
public:
bool title;
bool wait;
int scene;
};
extern System sys;

とやってるんですが、main.cppで「定義されていない識別子」エラーが出てしまいます・・・
他のファイルでは同じように書いて問題なく使えているんですがどうしてでしょうか。

112 :デフォルトの名無しさん:2013/11/20(水) 22:27:48.14
>>111
定義書けよ

113 :デフォルトの名無しさん:2013/11/20(水) 22:29:34.62
System sys;
がどこにもないからだろ。

しかしbool型に TRUE/FALSE て

114 :デフォルトの名無しさん:2013/11/20(水) 22:32:34.31
>>112-113
すみませんおかげで解決しました
これに気付かないとか正直ひどすぎましたもうしません

115 :デフォルトの名無しさん:2013/11/20(水) 22:42:08.45
派生クラスを複数作って処理をしていった場合
基底クラスのメンバー変数とかは使われず無駄になることない?
C++はこういうものなの?

116 :デフォルトの名無しさん:2013/11/20(水) 22:43:34.96
全く意味がわからん
コード貼れ

117 :デフォルトの名無しさん:2013/11/20(水) 22:47:47.02
クラスのスタティックメンバ変数ってものを宣言することある?

-- Amigo.h --
class amigo {
static int count;
public:
///
};

-- Amigo.cpp --
int Amigo::count = 0;

ヘッダにそんなもの書く必要がある場合ってある?
俺には思いつかない。

118 :デフォルトの名無しさん:2013/11/20(水) 22:48:35.58
基底クラスのメンバ変数無駄にするような派生なんてしないほうがいい

119 :デフォルトの名無しさん:2013/11/20(水) 22:51:25.93
せやな
そんな設計で基底と矛盾がないように作られてるとは到底思えんし

120 :デフォルトの名無しさん:2013/11/20(水) 23:00:45.83
あれだよ、例えばほら、Javaではすべてのオブジェクトでsynchronizedできるようになってるけど
StringオブジェクトとかIntegerオブジェクトでsynchronizedする人なんていないから
そういう情報を基底クラスに持ってても使われなくて無駄だよね、とかそういうことじゃない?

121 :デフォルトの名無しさん:2013/11/20(水) 23:01:51.63
>>111
そりゃTRUEというものがどこにも定義されてないからな

122 :デフォルトの名無しさん:2013/11/20(水) 23:04:20.56
>>121
えっ

123 :デフォルトの名無しさん:2013/11/20(水) 23:05:05.06
>117
Win32API使ってるとたまに遭遇するけど、追加の引数を渡せないコールバック関数をstaticメンバにして
それに何かデータを渡したい場合とか。

124 :デフォルトの名無しさん:2013/11/20(水) 23:09:23.25
あー…あるある。SetWindowsHookExとかな

125 :121:2013/11/20(水) 23:11:03.56
>>122
え、じゃねーよ。
識別子が定義されてないんだからリンクエラーじゃなくて
コンパイルエラーだろ。
このコードでコンパイルエラーになるところはそこしかない。

126 :デフォルトの名無しさん:2013/11/20(水) 23:12:09.65
>120

>115は「変数」と申しております。

127 :デフォルトの名無しさん:2013/11/20(水) 23:13:08.69
>121,125
>111-114

128 :デフォルトの名無しさん:2013/11/20(水) 23:15:18.13
>>123
いやそうじゃなくて、ヘッダにわざわざ書く必要があるかってこと。
Amigo.cpp に

namespace {
 int Amigo_static_count = 0;
}

を置いてそれを使えばいいじゃない。
get, set系をstaticメンバにすればいい。
ヘッダにはたとえprivateでも極力なにも入れたくないし。

129 :デフォルトの名無しさん:2013/11/20(水) 23:17:53.49
俺はC++のヘッダはクラスの設計を俯瞰するように書くものだと思ってるんだが
そんなにprivateを書くのが嫌ならインタフェース化しろよ

130 :デフォルトの名無しさん:2013/11/20(水) 23:20:49.31
>>115
基底クラスでちゃんと使われていて、派生クラスで意識しないうちに使われてるだけ、っていうことじゃないの?
本当になにも使われないパターンだってありうるだろうけど。

131 :デフォルトの名無しさん:2013/11/20(水) 23:22:47.11
>>129
privateは設計とは言えないなあ。
実装の詳細であることが多い。
pImplなんか極力その方向に持っていこうとした現れ。

132 :デフォルトの名無しさん:2013/11/20(水) 23:27:10.51
>>129
インターフェースとは何ですか?
規格の何ページに書いてあるのですか?

133 :デフォルトの名無しさん:2013/11/20(水) 23:27:23.48
>>115
クラス設計を間違えてるんだな

134 :デフォルトの名無しさん:2013/11/20(水) 23:28:32.04
まあ private static 変数は無名名前空間に持っていっても
大体の場合は大した問題はないよな
まあ精々 .cpp が複数になった時に便利な程度

135 :デフォルトの名無しさん:2013/11/20(水) 23:28:35.84
どうやって実現するか、は他人に見せる必要はない。
pImplだって本当は何の痕跡も残したくないのだが、何もないわけにはいかないから
しょうがなく不完全型のポインタという形でごまかしてるようなもん。
staticメンバなら本当にヘッダから排除できるからそうするに越したことはない。

136 :デフォルトの名無しさん:2013/11/20(水) 23:29:32.68
private static な方が便利、ね
でもそういうケースはゴッドクラス化してる恐れがある

137 :デフォルトの名無しさん:2013/11/20(水) 23:32:25.66
privateメンバは全部pimplで隠しちゃえばいいってじっちゃんが言ってた
ヘッダに書いてたって意味ないし

138 :デフォルトの名無しさん:2013/11/20(水) 23:38:19.09
privare static でオープン配列はよく使うけどな
メンバー関数のポインタの排列とかも作るし

139 :デフォルトの名無しさん:2013/11/20(水) 23:40:08.44
pimplはなんか嫌
スタイルのために他の色んなものを犠牲にしてる感じが。

140 :デフォルトの名無しさん:2013/11/20(水) 23:40:50.24
ぴんぷるぴんぷる

141 :デフォルトの名無しさん:2013/11/20(水) 23:43:40.14
>>139
どうせ年取りゃお前も変わる

142 :デフォルトの名無しさん:2013/11/20(水) 23:46:00.53
private staticってコンストラクタの呼び出し回数数える時とか便利じゃない?
そういう問題じゃないのか

143 :デフォルトの名無しさん:2013/11/20(水) 23:49:37.10
>>142
それヘッダに置かなくてよくね?
ソースに置くならメンバにする必要なくね?
って問題

144 :デフォルトの名無しさん:2013/11/20(水) 23:50:13.49
クラスに入れたいからそうしてんだよ
いい加減理解しろアホ

145 :デフォルトの名無しさん:2013/11/20(水) 23:54:07.69
>>144
クラスに入れたいときってどういうときなんだよ
入れないと困るパターンを一つでもあげてみろ

146 :デフォルトの名無しさん:2013/11/20(水) 23:57:41.72
まあセンスなんて人それぞれだし
個人的にはprivate static変数って初期化方法からして何だかなって思うけど

147 :デフォルトの名無しさん:2013/11/21(木) 00:00:56.64
ヘッダだけで書きたい場合(例:template)とか。

148 :デフォルトの名無しさん:2013/11/21(木) 00:01:17.31
>>143
テンプレートクラスのとき、どうするの?

149 :デフォルトの名無しさん:2013/11/21(木) 00:02:33.37
>>145
あるクラスに密接に関連していて
クラス外から見える必要のないものが
クラスに入ってないと気持ち悪いだろ

150 :デフォルトの名無しさん:2013/11/21(木) 00:02:36.87
なるほど
具体例挙げていただけると助かる

151 :150:2013/11/21(木) 00:03:23.34
templateの方ね

152 :デフォルトの名無しさん:2013/11/21(木) 00:08:12.24
>>148
そんときゃ入れればいいだろ。
原理主義じゃないんだし。

153 :デフォルトの名無しさん:2013/11/21(木) 00:11:10.07
SLTやboostでstaticメンバを持ってるクラスってなんかあったかなあ・・・

154 :デフォルトの名無しさん:2013/11/21(木) 00:13:37.83
そんな二大ゴミライブラリを挙げなくても

155 :デフォルトの名無しさん:2013/11/21(木) 00:15:38.14
>>135
オレ前にpimplの痕跡を消そうとしていろいろやったけど断念した。
効率よくやるのはムリポ。

156 :デフォルトの名無しさん:2013/11/21(木) 00:19:53.78
>>155
何が目的でそれをやろうとしたの?

157 :デフォルトの名無しさん:2013/11/21(木) 00:20:40.01
stlとboostを否定する奴は老害だ。
C++11を否定する奴もまた老害だ。
見かけ次第Pから排除しろ。

158 :デフォルトの名無しさん:2013/11/21(木) 00:21:34.11
>>154
あなたの思うゴミじゃないライブラリって何?

159 :デフォルトの名無しさん:2013/11/21(木) 00:22:18.87
STL?
15年くらい前にそんなの有ったね

160 :デフォルトの名無しさん:2013/11/21(木) 00:31:04.77
チャラい若造に、STLってSimpleTemplateLibraryって割に、全然シンプルじゃないですよねーwwwww
って言われたんだが、このクソゆとり野郎って思った私は老害なのでしょうか?

161 :デフォルトの名無しさん:2013/11/21(木) 00:31:22.89
vectorとか使わないのか

162 :デフォルトの名無しさん:2013/11/21(木) 00:34:57.89
>>152
つまりお前の理論は破綻してんだな

163 :デフォルトの名無しさん:2013/11/21(木) 00:35:54.20
思い至らなかっただけだろw
つまり、そういうことだ。

164 :デフォルトの名無しさん:2013/11/21(木) 00:37:26.70
理論w

165 :デフォルトの名無しさん:2013/11/21(木) 00:40:17.55
インライン関数も同じだな

166 :デフォルトの名無しさん:2013/11/21(木) 00:41:43.76
>>155
class WithoutPimpl {
public:
 WithoutPimpl(int p, int l);
 int prop() const; //コンストラクタで受け取ったpを返す
 int lean() const; //コンストラクタで受け取ったlを返す
};

これをやりたいってこと?

167 :デフォルトの名無しさん:2013/11/21(木) 00:44:06.71
>>160
Standard.....だろ

168 :デフォルトの名無しさん:2013/11/21(木) 00:45:12.80
ちょっとでも適用できないパターンがあったらそのアイデアはゴミだ
そういうもんだ

169 :デフォルトの名無しさん:2013/11/21(木) 00:46:44.16
STLってStandardTemplateLibraryって割に、
全然Standardじゃないんですよねーwww

170 :デフォルトの名無しさん:2013/11/21(木) 00:53:31.22
Standard Traditional Library

171 :デフォルトの名無しさん:2013/11/21(木) 00:55:15.89
C++関連NGワード: STL

172 :デフォルトの名無しさん:2013/11/21(木) 00:57:05.55
.cppにコード全部書けば、IDEなりコンパイラなりが公開すべきpublicな部分だけを
抜き出して.hppへ出力してくれれば便利だと思う。なんでそうなってないの?

173 :デフォルトの名無しさん:2013/11/21(木) 01:01:55.06
そんなことしたら多重定義です

174 :デフォルトの名無しさん:2013/11/21(木) 01:03:07.32
>>172 お前がまだ標準化委員会に提案していないからさ。

175 :デフォルトの名無しさん:2013/11/21(木) 01:06:11.12
exportを指定する構文がないから、全部exportする事になってしまう

176 :デフォルトの名無しさん:2013/11/21(木) 01:45:27.23
pimplか、初めて見た時はヘッダにpublicメソッドとimplポインタがあるだけで何がどうなってるのかイミフだったな、何もかもみな懐かしい。

177 :デフォルトの名無しさん:2013/11/21(木) 01:51:50.01
>>143
テンプレートクラスの場合はヘッダに置くしメンバーにもする。
しかしテンプレートクラスでなければヘッダには置かないしメンバーにもしない。
てことだよな。

なんでそのクラスがテンプレートであるかないかの違いだけで
そこまで大きく流儀を変えなければならないんだ?

178 :デフォルトの名無しさん:2013/11/21(木) 03:05:41.14
Pimplって、なんかバッドノウハウ感が漂うんだよなあ。いや使ってるけどさ。

179 :デフォルトの名無しさん:2013/11/21(木) 03:09:27.36
STLってSexTechniqueLibraryって割に、
先輩まだ童貞ですよねーwww

180 :デフォルトの名無しさん:2013/11/21(木) 03:30:48.94
Sしかかかってないのと、あとLはもうちょっと頑張れ

181 :デフォルトの名無しさん:2013/11/21(木) 06:11:36.18
>>177
それはpimplだって同じことだよな。
やっぱバッドノウハウなのか?

182 :デフォルトの名無しさん:2013/11/21(木) 06:27:36.61
俺はprivateメソッドもなるべく消してるよ。
メンバ情報を使って計算するってだけならcppの中のフリー関数で間に合うからな。

あとpimplポインタを消そうとしたこともやっぱりあるw
ひとつぐらいそれで動いてるやつあるかもw

183 :デフォルトの名無しさん:2013/11/21(木) 07:08:52.99
pimplってpimple(ニキビ)とpimp(売春婦のヒモ)のどっちのこと?

184 :デフォルトの名無しさん:2013/11/21(木) 07:11:44.14
>>177
「流儀をそろえる」ことよりも、実務的に「再コンパイルの発生を抑える」ことのほうを優先すれば
そうなるでしょ。

185 :デフォルトの名無しさん:2013/11/21(木) 07:18:15.48
>>183
前者

186 :デフォルトの名無しさん:2013/11/21(木) 07:24:28.70
pimpl使うと他の人に読みにくいって言われるから使えない

187 :デフォルトの名無しさん:2013/11/21(木) 07:26:13.22
実際のメモリ配置を考えるとprivate static変数はやだな

privateをpimplまで隠しきるのも嫌
オブジェクトのサイズが増えるんだから再コンパイルの発生は必然で
それを意地でも抑えたいほどコンパイルが激遅いことはもうあまりない

188 :デフォルトの名無しさん:2013/11/21(木) 07:31:38.62
>>182
factory使って実体を作って返したりしてみたわ

189 :デフォルトの名無しさん:2013/11/21(木) 07:37:28.41
voidポインタにしたら完全に型情報は隠蔽できる

190 :デフォルトの名無しさん:2013/11/21(木) 07:39:54.79
>>189
そうすることに何か意味あるの?

191 :デフォルトの名無しさん:2013/11/21(木) 07:43:41.83
型名を変更したくなっても再コンパイルが必要ない

192 :デフォルトの名無しさん:2013/11/21(木) 07:45:18.24
ファイルスコープにローカルなクラスを作ればよくね?
つーかpimplが嬉しいってことは、そのクラスがでかすぎるってことじゃね?

193 :デフォルトの名無しさん:2013/11/21(木) 07:49:33.99
>>191
外のクラス名を偏向せずにpimplの型名だけ変えたい理由ってなに
>>192
> ファイルスコープにローカルなクラスを作ればよくね?
それがpimplじゃいー

194 :デフォルトの名無しさん:2013/11/21(木) 07:51:48.73
Pimpl idiom vs Pure virtual class interface
http://stackoverflow.com/questions/825018/pimpl-idiom-vs-pure-virtual-class-interface

195 :デフォルトの名無しさん:2013/11/21(木) 07:52:41.56
ヘッダにユーザーが使えないprivateを書くことを、具象クラスだから仕方ないと思うか、許せないかの違い
再コンパイルしないでいいってのは副産物

196 :デフォルトの名無しさん:2013/11/21(木) 07:55:10.77
>>195
再コンパイルの発生以外に「許せない」っていう根拠あるの?

197 :デフォルトの名無しさん:2013/11/21(木) 08:06:11.77
理由も無くpimplの型をvoidで書いてたやつはちゃんと人に見せる前に直しとけよ

198 :デフォルトの名無しさん:2013/11/21(木) 08:12:04.47
オバQポインタまたはpimpヒモ野郎か。
バッドイディオムな響きだな。

199 :デフォルトの名無しさん:2013/11/21(木) 08:14:13.02
>>194
後者の方が筋が良さそうに思えるが、外人的にはどういう結論になってるの?

200 :デフォルトの名無しさん:2013/11/21(木) 08:17:06.44
CでOOPやったときはpImplみたいな書き方したな。
C++になってもまだこんなののお世話になるとは思わなかった。

201 :デフォルトの名無しさん:2013/11/21(木) 08:24:09.12
>>199
使い分け派3名
よく理解してない1名
単に解説している1名
pimpl派1名
純粋仮想派2名

ってところ

202 :デフォルトの名無しさん:2013/11/21(木) 08:26:17.59
>>199
up voteが一番多い回答は

C#の「値型」「参照型」みたいな区別をして、「値型」のほうにはpimplを使い、「参照型」には
pure virtual を使う。ただし「値型」のほうはわざわざpimplを使うほどのものでないことが多い。

って感じ。

203 :デフォルトの名無しさん:2013/11/21(木) 08:26:55.27
>>201
なるほど、とりあえずpimpl派には勝ったってことで納得しとこうw

204 :デフォルトの名無しさん:2013/11/21(木) 08:28:58.86
>>203
使い分けしろって書いてるのに勝ったも糞もないわ

205 :デフォルトの名無しさん:2013/11/21(木) 08:29:39.71
>>204
>ただし「値型」のほうはわざわざpimplを使うほどのものでないことが多い。

206 :デフォルトの名無しさん:2013/11/21(木) 08:31:43.97
>>202
pimplの出番無いじゃん。

207 :デフォルトの名無しさん:2013/11/21(木) 08:39:07.63
>>205
そのpimplを使うほどの物ではないものはpure virtualにするか迷うようなものでもない。

使う機会の多さで勝ち負けを決めるんならpure virtualの方が勝ちということでいいけど。

208 :デフォルトの名無しさん:2013/11/21(木) 08:42:59.05
そんなに使う機会が少ないならルールで禁止するか空気読んで使わないな
記法的にかなり異質だし。

209 :デフォルトの名無しさん:2013/11/21(木) 09:01:19.45
そのクラスの挙動を隠したいならpure virtual
挙動は明確だけど実装方法を隠したいならpimpl


実装方法を隠したいときなんて、
名前空間がグダグダでincludeするだけで他に影響あたえるようなヘッダ(windows.hのmin maxマクロとか!)を使わないとだめだけど、
他に影響させたくないとかぐらいしかない。
そのヘッダを容易に変更できる環境ならばそっちを修正すれば事足りる。

他に使うときはヘッダ類が巨大でコンパイル時間がかかりすぎて困ってるときぐらい。

210 :デフォルトの名無しさん:2013/11/21(木) 09:08:21.98
windows限定のプロジェクトなら#include <windows.h>が半ば前提だから
HANDLEの類をprivateに置くとしても隠さないな

マルチプラットフォームなプロジェクトならpimplも悪くないか。でもそういうのは
プラットフォーム依存な型のメンバ変数なんて置かないと思う

211 :デフォルトの名無しさん:2013/11/21(木) 09:42:37.34
>>209
クラスの挙動を隠蔽とか、意味が分からんのですけど?
どうやって使うんだよ。

212 :デフォルトの名無しさん:2013/11/21(木) 09:46:02.78
>>209
挙動を隠蔽というのは、何をするのかという仕様を隠蔽することか?

213 :デフォルトの名無しさん:2013/11/21(木) 09:47:30.53
class PureVirtual
{
PureVirtual(); // 生成されたインスタンスの状態は秘密です。
virtual ~PureVirtual(); // インスタンスが破棄されるかどうかは秘密です。
virtual void doSomething(int x) = 0; // 挙動および引数の意味は秘密です。
virtual int Something() const = 0; // 返される値の意味は秘密です。
};

214 :デフォルトの名無しさん:2013/11/21(木) 09:50:38.71
多態のことだろ

215 :デフォルトの名無しさん:2013/11/21(木) 09:53:03.42
挙動隠蔽指向設計

216 :デフォルトの名無しさん:2013/11/21(木) 09:54:36.88
>>209
長々と書いておられるようだが、まず、全ての文章が意味不明

217 :デフォルトの名無しさん:2013/11/21(木) 10:20:14.67
すべて同意できる俺は少数派なのか・・・

いっとくけど自演じゃないよ?

218 :デフォルトの名無しさん:2013/11/21(木) 10:23:02.46
ソースが数百にのぼる大規模開発やへぼいコンパイラを使わざるを得ない環境に
身をおいたことが無いなら、再コンパイルを抑えるための実装隠蔽の意義がよくわからないのは
しょうがないかもしれない。

219 :デフォルトの名無しさん:2013/11/21(木) 10:35:51.87
>>218
趣味で作るプログラムでも、1日に2〜3ファイルのペースで増やしていけば、数百ファイルくらい数ヶ月で到達するぞ

220 :デフォルトの名無しさん:2013/11/21(木) 10:36:56.73
>>217
挙動の隠蔽とはどういう意味?

221 :デフォルトの名無しさん:2013/11/21(木) 10:39:40.67
C++のコンパイル時間でコーヒーを1杯作って飲み終われるとか時々聞くけど
一体どんだけの規模になるとそうなるの?

222 :デフォルトの名無しさん:2013/11/21(木) 10:46:09.05
>>220
んーと>>209の意図と同じかどうかは知らないが(同じだと思うが)
大雑把な動き(IF仕様)は決まっているが、その動きを実現するための
実際の動作(挙動・・・っていうか実装の詳細)は利用者側に見せない、
というか意識させない、ということだろ
例えば virtual string lookupOwner()=0 の場合に
どこのDBからどう引いてくるのか意識させない、とか

pimplとの使いどころの違いは
pimplは「隠す」とか「実装を切り離す」(リビルド速いとか)とか
いうのが主眼なんだけど
pure virtualの場合は「意図させない」とか「差し替えやすい」とか
いうのが主眼になってる
・・・ってな話じゃないの?

223 :デフォルトの名無しさん:2013/11/21(木) 10:46:43.50
10年くらい前に参加したシステムでサブプロジェクト50個
かつ頻繁に共通ヘッダが書き換えられてフルビルド・ビルド失敗とかあった

マシンパワーとメモリが大幅に増えたからいくらかマシになってるだろうけど
構成からおかしいといくらでもそうなる

224 :デフォルトの名無しさん:2013/11/21(木) 10:52:28.24
public関数とprivate関数で隠蔽の目的が異なる
private関数は無くなったり名前が変わったりしても他に影響が及ばない

225 :デフォルトの名無しさん:2013/11/21(木) 10:56:28.12
>>223
それはインターフェースでサブプロジェクト分離してない設計が悪い
pimplよりpure virtualやコンポーネント化すべき部分で
リーダーが馬鹿だとどうしようもないっていう普遍的な教え

226 :デフォルトの名無しさん:2013/11/21(木) 11:16:58.88
>>222
pure virtual の元々の使い道はなんだろうけど、 pure virtual インターフェースクラスで
pimpl と同様に実装の隠蔽ができるんだから委譲関数ベタベタ書かなくていい分そっちの
ほうがいいんじゃね?っていう話をしてたんだよ。

227 :デフォルトの名無しさん:2013/11/21(木) 11:18:12.94
×pure virtual の元々の使い道はなんだろうけど
○pure virtual の元々の使い道はそうなんだろうけど

228 :デフォルトの名無しさん:2013/11/21(木) 11:43:53.72
>>222
代わりに解説ありがとなー

>>226
使い方変わっちゃうし。

std::unique_ptr<scoped_lock> lk=scoped_lock::createInstance();
とか嫌でしょ。
pimplと比べて相対的にクラスを使用する方で使いづらい(実体をそのままほかのクラスのメンバに出来ないとか)、デバッグしづらいを許容できるならいいんじゃない?

229 :デフォルトの名無しさん:2013/11/21(木) 12:16:28.74
>>221
70万ぐらいじゃね

230 :デフォルトの名無しさん:2013/11/21(木) 12:29:17.91
グーグルさんのC++コンパイルは大規模サーバ使いまくってもまる一日かかるらしい

231 :デフォルトの名無しさん:2013/11/21(木) 12:58:05.19
クソみたいなOSSに依存しまくってたら膨大になるな

232 :デフォルトの名無しさん:2013/11/21(木) 14:09:04.83
>>226
ああ、そういう流れなのね

>>194の記事を読んできたけど、pimpleの良いところとして
・バイナリIFが安定してる(pure virtualだと変わることがある) -> shared lib分割時とか
・必要なメモリサイズが小さくてすむ(仮想関数多いときとか特に)

とか出てるね

233 :デフォルトの名無しさん:2013/11/21(木) 14:46:14.97
C++なんて使うなや、って話か。

234 :デフォルトの名無しさん:2013/11/21(木) 14:51:26.14
よく考えたら仮想関数の数は関係ないな
継承するクラスの数によるんだっけ? > オブジェクト毎のvtblのサイズ

235 :デフォルトの名無しさん:2013/11/21(木) 15:05:29.01
STLのstd::stringについて、質問です。

DLL内のstd::stringと、アプリのstd::stringの実装が違う場合(つまり、STLの実装が違う場合)、
DLL内のstd::stringから、アプリのstd::stringに代入したら、アプリは吹っ飛ぶのでしょうか?

>std::string sbuf = dll_object.string;
みたいな。

236 :デフォルトの名無しさん:2013/11/21(木) 15:07:54.19
アロケーターがあるから多分大丈夫

237 :デフォルトの名無しさん:2013/11/21(木) 15:20:29.97
class string1 {
size_t _size;
size_t _capacity;
T* ptr;
};

class string2 {
T* _begin;
T* _end;
T* _capacity;
};

string1 dllstring;
string2 appstring;

appstring = *reinterpret_cast<string2*>(&dllstring);
こんなことしたら当然吹っ飛ぶよね。アロケータを共有していない場合も吹っ飛ぶ。

238 :デフォルトの名無しさん:2013/11/21(木) 15:25:00.59
そもそもリンクできなかったりしないのかそれ。

239 :235:2013/11/21(木) 15:56:09.67
有難うございます>>236 >>237
すみませんkwsk教えて下さいorz

240 :デフォルトの名無しさん:2013/11/21(木) 16:10:14.13
std::stringの実装の多くは参照カウンタでcopy on writeにしてるよな
その実装方法は個々の実装で差がある

241 :235:2013/11/21(木) 16:16:22.49
ということは、
>std::string sbuf = dll_object.string;
のとき、左右のstd::stringの実装がことなる場合に、
参照カウンタの書き込みで、メモリを壊す可能性はあるのでしょうか?

242 :デフォルトの名無しさん:2013/11/21(木) 16:23:28.72
>>241
どんな理由であれ、データ構造や仕様に差があったらそのデータを同じ物として使えば何らかの不具合になるだろう。
特にstringは確実にポインタを抱えてるから、
どの位置の値がどういう意味のポインタなのかに違いがあれば
大きな不具合になる。

243 :デフォルトの名無しさん:2013/11/21(木) 16:30:24.11
>>240
stringのCopyOnWriteってまだしてる処理系あるの?
スレッドセーフ絡みでもう廃れた実装手法だと思ってるんだが

244 :235:2013/11/21(木) 16:52:19.98
>>242
なるほど、管理情報が不整合で普通に不具合、ということですねorz
>>243
今のSTLに参照カウントは無いかも、ということですねorz


ところで、アロケータというのは、不整合を回避するしくみだったりするのでしょうか?


後、全く関係無い質問ですが、copy on writeのものっていうのは、マルチスレッドで使えない、ということでしょうか?
例えば、QByteArrayは、copy on write、と書いてあったような気がしますが。。。

245 :デフォルトの名無しさん:2013/11/21(木) 17:12:45.01
COWがマルチスレッドじゃ使えないってことはないよ

246 :デフォルトの名無しさん:2013/11/21(木) 17:16:22.28
C++11でCOWなstringが禁止されたことについては↓とか参照して
http://stackoverflow.com/questions/12199710/legality-of-cow-stdstring-implementation-in-c11

247 :デフォルトの名無しさん:2013/11/21(木) 17:22:25.32
スレッドセーフを諦めて速度重視でCoWなstringを自作するメリットはあるわけか

248 :235:2013/11/21(木) 17:22:27.20
ヘェヘェヘェ >>246 >>245

コアな情報をイッパイ知ってしまいました。

>stdstr = qtstr.toStdString(); // だめ
http://d.hatena.ne.jp/yus_iri/20120328/1332888387

これってやっぱり、STLの異種混合のせいですよね?

でも、参照カウントとか無くなってて、
アロケータ(←理解してませんw)経由で、
今はSTL異種混合でもOK、かも知れないのですね。

知りたいのは、OKかどうかじゃなくて、NGの原因だったりですが。

249 :デフォルトの名無しさん:2013/11/21(木) 19:06:39.42
std::stringはSTLじゃないだろ

250 :デフォルトの名無しさん:2013/11/21(木) 19:14:00.28
STLの定義くらいどうでもいいものも少ない

251 :デフォルトの名無しさん:2013/11/21(木) 19:28:47.69
・C++の規格にSTLなんて無いぜ派
・コンテナとイテレーターとアルゴがSTL派
・stringもSTL、ただしiostreamは違う派
・iostreamもテンプレートは全部STL派
・C++ライブラリは全てSTL派
・自分以外の共通モジュール開発担当のライブラリは皆STL派

252 :デフォルトの名無しさん:2013/11/21(木) 19:40:47.87
・俺がSTLだ!

253 :デフォルトの名無しさん:2013/11/21(木) 19:45:33.30
上の二つは一応説明がつくけど
他は合理的な説明がつかない

254 :デフォルトの名無しさん:2013/11/21(木) 20:04:08.63
std::basic_string はコンテナに入りますか?

255 :デフォルトの名無しさん:2013/11/21(木) 20:07:34.45
iteratorがあれば、入るんじゃねーのー?

256 :デフォルトの名無しさん:2013/11/21(木) 21:17:49.08
南山まさかずって人がロベールは読むなって言ってたけど本当?

257 :デフォルトの名無しさん:2013/11/21(木) 21:21:38.81
日本人プログラマの言うことには耳を貸すな

258 :デフォルトの名無しさん:2013/11/21(木) 21:36:28.68
ロベールって日本人じゃね

259 :デフォルトの名無しさん:2013/11/21(木) 21:39:38.55
C++よりも日本語の勉強を・・・

260 :デフォルトの名無しさん:2013/11/21(木) 22:29:38.17
>>259
日本語がたいして出来ない底辺がマになるのに

261 :デフォルトの名無しさん:2013/11/21(木) 22:59:35.50
C言語で会話しそうだな

262 :重要:2013/11/21(木) 22:59:55.68
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

263 :デフォルトの名無しさん:2013/11/21(木) 23:04:33.28
結局どうなんです?

264 :デフォルトの名無しさん:2013/11/21(木) 23:34:58.19
とりあえずSTLという言葉を使う人は馬鹿確定

265 :デフォルトの名無しさん:2013/11/21(木) 23:42:08.53
>>264
お前一人で頑張ったって、世界は変わらんよ

266 :デフォルトの名無しさん:2013/11/21(木) 23:52:01.94
その人の言うには、今時C++11じゃない本はだめだということらしいです
その人は独習C++をすすめているようですけど、C++11に対応しているのでしょうか?

267 :デフォルトの名無しさん:2013/11/22(金) 00:04:52.12
本なんかで対応できるのか?
オレC++に10年以上ブランクがあってリハビリ中なんだけど、本で何とかなるとは思ってないな。

268 :デフォルトの名無しさん:2013/11/22(金) 00:07:00.00
hageの原著読めばその人も満足じゃね

269 :デフォルトの名無しさん:2013/11/22(金) 00:18:45.63
実は植毛をしておりました

270 :デフォルトの名無しさん:2013/11/22(金) 00:44:16.66
C++11対応の本なんてポケットリファレンスくらいだろ
独習とか頭湧いてんのかそいつ

ただ、ポケットリファレンスは初学者向きではないね

271 :デフォルトの名無しさん:2013/11/22(金) 00:59:29.52
初学者でもC++やる奴は優秀でないと駄目。だからC++11対応の英語本で勉強しろってことだろ
これぐらい読みこなせないとC++なんてやっても駄目って感じじゃないか

272 :デフォルトの名無しさん:2013/11/22(金) 01:02:40.64
無茶振りすぎるだろ
会社じゃ未だにC++03が使われる事が多いから、
今無理してC++11覚えても
あれも使えないこれも使えないって苛つくだけだろ

273 :デフォルトの名無しさん:2013/11/22(金) 01:08:02.56
そうだ! C++11 ならあの手があった!! ・・・孔明ぇぇぇ

274 :デフォルトの名無しさん:2013/11/22(金) 01:10:43.59
>>272
優秀な奴はそんなうんこ会社にはいかないよ

275 :デフォルトの名無しさん:2013/11/22(金) 01:16:13.80
前にC++11対応をうたった英語の入門書を買ったけど、
C++11はそれほど深くは語られてなかった
所詮みんなが求めてるC++11って浅いところだけなんだなと思った

276 :デフォルトの名無しさん:2013/11/22(金) 01:27:29.59
better C++03か

277 :デフォルトの名無しさん:2013/11/22(金) 01:41:27.87
バター

278 :デフォルトの名無しさん:2013/11/22(金) 01:44:40.36
現状C++11の初心者向けの本がないから
どれでも好きな本を読めば良い
その人が何を考えているのかは分からないが、
ロベールは中でもいい選択肢だと思う
C++11を知りたければ、その上でポケットリファレンスを読めば良い

279 :デフォルトの名無しさん:2013/11/22(金) 07:22:00.69
特に信用しなくていいみたいですね
気にしないことにします

280 :デフォルトの名無しさん:2013/11/22(金) 07:55:43.27
C++が既に入ってる人ならC++11は規格書読めばいい。
英語読めない人は寄付募ってた人のアレ読んで足りないとこはググれw

281 :デフォルトの名無しさん:2013/11/22(金) 08:12:51.71
洋書読めるなら禿の新作A Tour of C++とか良さそうだね
200ページないみたいだし、米Amazonでの評価も悪くない

282 :235:2013/11/22(金) 08:54:40.70
>std::string実装の異種混合(DLL内部のせいで)
>アロケー

上記の関係教えて下さいorz

283 :デフォルトの名無しさん:2013/11/22(金) 09:37:20.45
既存のAPIやライブラリが要求するから仕方なくって場合を除いて、生ポインタって使う機会ある?

284 :デフォルトの名無しさん:2013/11/22(金) 09:41:01.03
生ポインタ使いたくなった時

285 :デフォルトの名無しさん:2013/11/22(金) 11:01:14.52
>>280
バカにしてるくせに人に勧めるってどういう

286 :デフォルトの名無しさん:2013/11/22(金) 11:03:21.72
>>283
this!

287 :デフォルトの名無しさん:2013/11/22(金) 17:08:52.95
人という基底クラスを作り
その人クラスに年齢や身長などのメンバ変数を作る
この人クラスを派生させいろいろな職業の人を作っていった場合
基底クラスのメンバ変数は使わないから無駄にならない?
C++ってこういうもの?

288 :デフォルトの名無しさん:2013/11/22(金) 17:14:14.70
人と言う空の基底クラスをつくり
この人クラスを派生させいろいろな職業の人を作っていって
必要になった時にその人クラスに年齢や身長などのメンバ変数を追加すればいいんじゃないの

289 :デフォルトの名無しさん:2013/11/22(金) 17:15:00.91
>>287
C++以前の問題だろそれ

290 :デフォルトの名無しさん:2013/11/22(金) 17:18:53.25
>>287
継承したメンバがいらないのに、なぜ派生させるんだ?

291 :デフォルトの名無しさん:2013/11/22(金) 17:22:49.68
>>287
年齢や身長などの基底の属性がすべて存在する場合だけ派生させる

292 :デフォルトの名無しさん:2013/11/22(金) 17:48:24.67
>>287
派生の目的として再利用、拡張性、概念の整理がある以上
使用されない変数や実行されない関数があっても
何ら問題ではない

293 :デフォルトの名無しさん:2013/11/22(金) 17:56:51.24
基底として利用しちゃだめとかいろいろ条件つければ
何しちゃいかんって法律があるわけじゃないしね
最高級のスパゲッティを作る可能性はあるが。

294 :デフォルトの名無しさん:2013/11/22(金) 17:57:42.00
いやそれ以前にクラス設計と利用の問題だろこれ

295 :デフォルトの名無しさん:2013/11/22(金) 18:14:37.35
職業をメンバとして扱えば。
複数の職業を持つ場合に備えてリストにしておくとか。

296 :デフォルトの名無しさん:2013/11/22(金) 18:17:17.08
あ、もしかして多重継承恐怖症?

297 :デフォルトの名無しさん:2013/11/22(金) 18:27:49.99
多重継承恐怖症っていうより現実派って感じかな。
無職になった時のクラスチェンジとか僧侶になりたいときとか楽だから。

298 :デフォルトの名無しさん:2013/11/22(金) 18:30:28.14
あああ・・・
冷たいコーヒー買ってしまった。
やてもた。

299 :デフォルトの名無しさん:2013/11/22(金) 18:31:01.57
僧侶? 司教じゃね?

300 :デフォルトの名無しさん:2013/11/22(金) 18:32:22.43
仏教オンラインでは僧侶なんだけどな。
ハンターの100倍強い。

301 :デフォルトの名無しさん:2013/11/22(金) 18:53:57.99
>>287
C++の問題であるかのように言ってることから想像するに、
インターフェイスのようなのが欲しいってことかな?
それなら抽象基底クラスってのがC++にはあるけど。

302 :デフォルトの名無しさん:2013/11/22(金) 20:26:22.64
よくわからん
基底クラスのデータは使わないのが普通なの?

303 :デフォルトの名無しさん:2013/11/22(金) 20:55:03.68
受け取る側のことを考えればいい。

void acceptSomeOne(人& hito);

という関数があるとする。
実行時には hito のところに僧侶や予備校講師が飛び込んでくるんだ。
acceptSomeOneちゃんはそれで満足するか?
そういうソフトウェアだったら問題ない。

304 :デフォルトの名無しさん:2013/11/22(金) 21:10:41.53
>>302
いくら派生クラスから直接使わなくても、
基底クラスのインターフェース通して使われるわけだが。

305 :デフォルトの名無しさん:2013/11/22(金) 22:20:36.22
>>287
いろいろな職業の人を作ったら無駄になるってところがわからないんだが。
職業ごとに年齢や身長を調べたい場合には使うだろ。

306 :デフォルトの名無しさん:2013/11/22(金) 23:08:03.85
てか、人クラスを例に継承して云々てスゲーよく見かけるけど、ホントのとこ全然実際的じゃないよね?
例え話だからって言われたらそりゃそうなんだけど、実際だとモノフィックなデータクラスとして書かない?
どうせDBからデータ読み込むんだろうし、ポリモーフィックなクラスの例として適切なのか?ってよく思う。

307 :デフォルトの名無しさん:2013/11/22(金) 23:40:11.35
>>306
>>303の言うように、人を参照してる関数とかが僧侶や予備校講師を受け取って
何か意義のあることが できるんだったら適切

308 :デフォルトの名無しさん:2013/11/23(土) 08:48:12.69
ウチの会社だと新人研修では車クラスでお勉強するね
インターフェイスと大まかな仕様だけ渡して3Dで表示、操作できれば本採用

309 :デフォルトの名無しさん:2013/11/23(土) 09:58:14.11
Javaが出たての頃に買ったJavaの初心者本も車だった気がする。
モデル化やオブジェクト指向の例としては、車の方が適切だと思うんだけど、現実にソフトとして作る可能性が高いのは、人間に関するデータ処理の方だったりするよね。

310 :デフォルトの名無しさん:2013/11/23(土) 10:09:40.86
ゲーム系ならキャラクターを派生してPC,NPC,モンスターとか

311 :デフォルトの名無しさん:2013/11/23(土) 10:20:06.80
職業の扱いは、人の持つスキルやプロフィールなのか、とある個人なのかでかわってくると思うね。
そのあたりで、なんかすれ違ってないか?

312 :デフォルトの名無しさん:2013/11/23(土) 10:30:42.35
どれとどれかすれ違っているのだろう
別に議論しているわけではなくて、各々思うところを述べているだけに見えるけどなあ

313 :デフォルトの名無しさん:2013/11/23(土) 11:11:20.09
複数の職に就いている場合はどうするのっと

314 :重要:2013/11/23(土) 12:01:56.43
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

315 :デフォルトの名無しさん:2013/11/23(土) 12:06:56.77
hoge

316 :デフォルトの名無しさん:2013/11/23(土) 12:20:20.28
モデリングなんて着目する主体によるし、
人クラスそれ自体、分野で扱うものが違う。
ここで議論する話じゃない。

317 :デフォルトの名無しさん:2013/11/23(土) 12:48:05.65
名付ける必要のない識別子を例示する時にhoge以上に適切なメタ構文変数はありません
日本語なのでかなで「ほげ」としたいところですが、
これがサンプル中に出てくると非常に紛らわしくなります

int ほげ=10;
extern int はげ(int);
int ひげ=はげ(ほげ);

わかりにくいですね

int hoge=10;
extern int hage(int);
int hige=hage(hoge);

なんとわかりやすいのでしょう。というわけで名付ける必要のない識別子にはhogeをつかいましょう
foo, barなどいういう軟弱なメタ構文変数とちがいhogeシリーズは
hage, hige, huge, hege, hoge
と何も考えずに5種類もつかえます。 hogeを使いましょう

318 :デフォルトの名無しさん:2013/11/23(土) 13:56:56.51
>>317はキチガイ

319 :デフォルトの名無しさん:2013/11/23(土) 17:40:07.26
>hage, hige, huge, hege, hoge
なんか,hage先生からhageってしたかったけど
さすがにこれじゃひどいからって、一文字変えてhogeにしたって感じだな

320 :デフォルトの名無しさん:2013/11/23(土) 17:59:38.12
人クラスに職業持たせて各職業ごとの処理が必要なら
その時々でダブルディスパッチ実装で良くね?

321 :デフォルトの名無しさん:2013/11/23(土) 19:36:46.77
プログラムを作りやすい時代になったよね。
昔は、作ってて問題があると専門書を引っ張り出してきて探しまくってたけど今は殆どの問題は「ネットで検索」で解決出来るもんね。
結構面倒?難しい?問題だと、海外サイトじゃないとヒットしないのが玉にキズだけど。

322 :デフォルトの名無しさん:2013/11/23(土) 20:05:17.63
その分知らなくちゃならない知識も増えた
昔の人は選択肢少ない分だけ楽だよ
羨ましいね簡単そうでさ

323 :デフォルトの名無しさん:2013/11/23(土) 20:12:40.03
グーグルの逆引き能力が高すぎて書籍の立場がなくなりつつある。
電子書籍が統一フォーマットになって電子書棚全体に対して全文検索できるようになったら
書籍の復権もあると思うんだけどな。

324 :デフォルトの名無しさん:2013/11/23(土) 20:15:19.34
てか、月額1千円とかでオライリーの電子書籍が読み放題/検索し放題ってサービスやってほしい。
全部が無理ならC++関連のみとか、JavaScriptのみとか、カテゴリ分けしてもいいから・・・・・・

325 :デフォルトの名無しさん:2013/11/23(土) 20:50:07.30
オライリーは著者のオナニーがうっとおしい
眈々と必要な情報を体型的に並べてくれりゃいいのに

326 :デフォルトの名無しさん:2013/11/23(土) 20:52:00.55
月1000円なら年12000円分の書籍買った方がいい

327 :デフォルトの名無しさん:2013/11/23(土) 21:27:39.86
2-3冊しか買えねーじゃん

328 :デフォルトの名無しさん:2013/11/23(土) 21:40:50.55
本はその一部分が必要が為に買ったりするから結構な数買っちゃう

329 :デフォルトの名無しさん:2013/11/23(土) 21:45:45.30
本が置けなくなったから倉庫物件買いました

330 :デフォルトの名無しさん:2013/11/23(土) 21:57:06.33
>>326
月1000円は書籍代というより有料情報の横断検索代と思えば別に高くない。

331 :デフォルトの名無しさん:2013/11/23(土) 22:09:45.36
専門書・論文は会社で色々買ってもらっているだろ
専門書すらたいして買ってもらえない底辺企業・学校にいるから自腹なのか

332 :デフォルトの名無しさん:2013/11/23(土) 22:32:24.86
システム開発が本業の会社とは限らないだろ?
ソフトウェアなんて今や社会のあらゆる場所で使われてるんだからさ。
ユーザー企業にだって規模が小さいだけで本格的なプログラムを作っている人間はいくらだっている。

333 :デフォルトの名無しさん:2013/11/23(土) 22:40:54.92
>>332
プログラムを作っている奴がいるならユーザー企業でも買ってもらえるだろ
ユーザー企業で本格的なプログラムを作っている奴は開発ツールも自腹なのか

334 :デフォルトの名無しさん:2013/11/23(土) 22:43:22.13
>>324
Safari Books Onlineは40ドルくらいだから試してみたら

335 :デフォルトの名無しさん:2013/11/23(土) 22:53:49.31
大学生は買ってもらえない

って思ったけど大学生なんてC++入門書一冊あれば充分だな

336 :デフォルトの名無しさん:2013/11/23(土) 22:54:41.31
どっかの会社でオブジェみたいにオライリー全種制覇とか紹介されてたなw

月額1千円のサービスってのは、エバーノートの全文検索機能便利→自分でスクラップしなくても
どこかの誰かが優良な情報のみを選りすぐって全文検索サービスを提供してくれたら有料でも
利用するのに→オライリーの電子書籍に全文検索エンジンを組み合わせれば直ぐにできそうじゃね?
って思っただけなんだけどねw

337 :デフォルトの名無しさん:2013/11/23(土) 22:56:16.64
年に1冊もあれば十分、という人なら買ってもらう本だけでいいんだろう。

338 :デフォルトの名無しさん:2013/11/23(土) 22:57:36.50
会社側でオライリーと契約して職場では読み放題というのもある

339 :デフォルトの名無しさん:2013/11/23(土) 23:06:20.16
>>338
紙の書籍では検索できないし、一度は通読して大体でも何がどの本のどの辺りに書かれてるか
把握しておかないと役に立たないとまでは言わないまでも、少なくとも効率的には利用できない。

グーグル便利すぎ!に対抗するには、電子書籍化+書籍境界を越えての全文検索機能は
必須だと思う。

340 :デフォルトの名無しさん:2013/11/23(土) 23:22:29.50
>>333
開発ツールはまとめて購入するだろうが書籍は認められにくいだろうね。

341 :デフォルトの名無しさん:2013/11/23(土) 23:31:12.86
契約で読み放題っていうのは電子書籍の方ね
紙で読み放題っていうのは殆ど聞いたことない

342 :デフォルトの名無しさん:2013/11/23(土) 23:32:06.44
>>338
そんなんあるんだ。

343 :デフォルトの名無しさん:2013/11/23(土) 23:38:12.54
>>341
そんなのあるのか、知らんかった。
だったらもう既に全文検索エンジンと組み合わせて独自のオライリー本検索システムとか
作ってる会社もありそう。羨ましいぞ

344 :デフォルトの名無しさん:2013/11/24(日) 02:37:21.89
隣の芝は青い

345 :デフォルトの名無しさん:2013/11/24(日) 08:02:51.70
pure virtualだけのインタフェースクラスを作って、同時にそのデフォルト実装クラスも
用意したとき、それらを同じヘッダに入れる?
たまにカスタム化した実装クラスをつかうかもしれないけど、
ほとんどの場合はそのデフォルト実装クラスを使う、という前提で。
あと、そのためのfactoryクラスはどうしてる?

346 :デフォルトの名無しさん:2013/11/24(日) 09:20:04.65
>>335
大学図書室とか所属研究室で頼めば買ってくれるしょや?

347 :デフォルトの名無しさん:2013/11/24(日) 09:50:18.21
operator==が実装されてるクラスのswitch構文てサポートされんかな

348 :デフォルトの名無しさん:2013/11/24(日) 10:01:03.60
switch構文てウィンドウメッセージの処理ぐらいにしか使わないだろ?
クラスでの需要ないから

349 :デフォルトの名無しさん:2013/11/24(日) 10:02:16.51
非プリミティブ型リテラルの生成規則を厳格に定めてからだね
==(classType, primitiveType)ならばクラスにこだわる必要ないし

350 :デフォルトの名無しさん:2013/11/24(日) 10:32:02.48
>>345
同じヘッダに入れてもファイル数を減らすだけの効果しかないだろ。

351 :デフォルトの名無しさん:2013/11/24(日) 10:50:37.70
>>345
その前提だったら同じヘッダに入れる。
factoryもインタフェースだけ入れる。

352 :デフォルトの名無しさん:2013/11/24(日) 11:31:57.57
>>347
ああ、確かに欲しいかも。

353 :デフォルトの名無しさん:2013/11/24(日) 11:47:19.14
switch要素のバリエーション増やして何が嬉しいの?

354 :デフォルトの名無しさん:2013/11/24(日) 12:03:17.33
switchにoperator==による同値判定ロジックを使いたいってことだろ
別におかしな発想ではない
今さら互換性で無理なんだろうけど

355 :デフォルトの名無しさん:2013/11/24(日) 12:37:26.75
elseifの代わりならmapに入れておけ
JavaScriptのような仕様は使いにくい

356 :デフォルトの名無しさん:2013/11/24(日) 12:43:34.23
ちょっと言葉足らずで言語批判っぽくなってしまった
JavaScriptのswitchはジャンプテーブルでないので、
C++でそれをやると2つの意味をもつ事になって使いにくくなる

357 :デフォルトの名無しさん:2013/11/24(日) 12:46:00.07
switchは構文がおぞましいから使わない

358 :デフォルトの名無しさん:2013/11/24(日) 12:58:49.82
switchは仕方なく使うもんであって、使えるパターンを増やしてどうする、ってことだろ。

359 :デフォルトの名無しさん:2013/11/24(日) 13:21:15.95
switch使うやつは大罪人

360 :デフォルトの名無しさん:2013/11/24(日) 13:29:12.77
switchはマジ使わなくなった
昔は連発してたけど

361 :デフォルトの名無しさん:2013/11/24(日) 13:42:01.45
Cじゃないと使わないな

362 :デフォルトの名無しさん:2013/11/24(日) 14:33:26.00
fallthroughをコンパイラスイッチで禁止できればこんなに嫌われずに済んだろうに

363 :デフォルトの名無しさん:2013/11/24(日) 14:34:31.38
そんなことしちゃダメだろ

364 :デフォルトの名無しさん:2013/11/24(日) 15:45:24.40
有名どころのSNS(mixi、Facebook、Twitter、インスタ、flicker)レベルのややこしい仕組みのシステムをC++で書いたら早くならないの?

365 :デフォルトの名無しさん:2013/11/24(日) 15:49:12.61
switchはループと組み合わせるとbreak/continueの対称性が壊れるのが美しくない

366 :デフォルトの名無しさん:2013/11/24(日) 15:49:55.19
enumのswitch分のcase漏れをコンパイル時エラーにしたいんだがいい方法無いだろうか

367 :デフォルトの名無しさん:2013/11/24(日) 15:51:46.81
ちょっと言い直す、
switch文に限らず、enumの条件網羅をコンパイル時に保証できるようにしたいんだ。

368 :デフォルトの名無しさん:2013/11/24(日) 15:54:56.78
switchはifより速く動作させられるコンパイラ、CPUは稀とおもう。
これでいいだろ。

do {
if(・・・) { ・・・ break; }
if(・・・) { ・・・ break; }
if(・・・) { ・・・ break; }
} while(0);

369 :デフォルトの名無しさん:2013/11/24(日) 16:08:26.91
>>366
-Wallにすれば警告が出る。エラーにしたければ-Werror。
って、普通こんなのデフォ設定だろ。
>>367
ifで網羅チェックとかアホか。
>>368
switch文は定数だからオプティマイズが効くわけだが。

370 :デフォルトの名無しさん:2013/11/24(日) 16:11:36.26
>>362
それがないswitchなんて意味がない
最初からハッシュテーブルに詰めろ

371 :デフォルトの名無しさん:2013/11/24(日) 16:14:26.35
>>368
オートフォーマットと相性悪いし1行に複数文は置きたくない
そしてbreak使いたい(そしてgotoを避けたい)がためのこのdo/whileの使い方嫌いだ

372 :デフォルトの名無しさん:2013/11/24(日) 16:15:49.98
>>369
アフォ >>366はどう読んでも
enum { hage, hige, huge, hege, hoge};
switch(hogehoge) {
case hage:
case hige:
case huge:
case hege:
default:
}
でチェックしたいという事だろ お前の読解力の無さにはびっくりだよ

373 :デフォルトの名無しさん:2013/11/24(日) 16:19:04.75
>>372
こっちがびっくりだよ。
マジならこんなレベルのやつとは関わりたくないもんだわ。

374 :デフォルトの名無しさん:2013/11/24(日) 16:19:43.31
>>364
FacebookはPHPから移行してる。新規はD言語とかも

375 :366:2013/11/24(日) 16:23:38.73
>>369
default無くしたら-Wallで警告出た、
default書くのが癖になってたんでこれ知らなかった、サンクス。

376 :デフォルトの名無しさん:2013/11/24(日) 16:35:43.79
>>367
型のパターンマッチだけならあるんだけどなあ
網羅は無理そう

377 :デフォルトの名無しさん:2013/11/24(日) 16:42:36.95
QACとか使えばできるだろ。

378 :デフォルトの名無しさん:2013/11/24(日) 17:02:10.12
値の衝突がありえるから構文解析無しではスクリプト生成でさえ無理だね。

379 :デフォルトの名無しさん:2013/11/24(日) 17:04:10.47
アホ自慢はいい。
同じ値使ったらコンパイラがエラー出すわ。

380 :デフォルトの名無しさん:2013/11/24(日) 17:05:31.43
生成物手動修正自慢は市んんでて下さい。

381 :デフォルトの名無しさん:2013/11/24(日) 17:09:58.72
なんかQACとかも知らないアホが混じってるな。

382 :デフォルトの名無しさん:2013/11/24(日) 17:16:31.39
むしろツール使わないとできないの?って言いたい。

383 :デフォルトの名無しさん:2013/11/24(日) 17:17:27.39
QACって何?

384 :デフォルトの名無しさん:2013/11/24(日) 17:17:39.69
そんなお前はハンドアセンブルしとけばおk。

385 :デフォルトの名無しさん:2013/11/24(日) 17:18:09.11
コンパイラって何ですか?

386 :デフォルトの名無しさん:2013/11/24(日) 17:18:43.38
ライトついてますか?

387 :デフォルトの名無しさん:2013/11/24(日) 17:28:43.46
オプション変更で済むのにツールやライブラリを使う馬鹿

388 :デフォルトの名無しさん:2013/11/24(日) 17:35:31.33
静的解析やっといた方がいいぞ?w
まぁほとんど無意味なことも多いが何%かは本当のバグのこともある。

389 :デフォルトの名無しさん:2013/11/24(日) 17:38:27.59
Sonarとか別に使ってるから
最近知って舞い上がってる新人君か?

390 :デフォルトの名無しさん:2013/11/24(日) 17:50:18.60
使ってたらそもそもこんな話は出ないだろ。

391 :デフォルトの名無しさん:2013/11/24(日) 17:55:47.24
だから使う以前の話だろと

392 :デフォルトの名無しさん:2013/11/24(日) 17:57:39.26
ところでSonarってQAC++の代わりになんの?
QACのレポート何万件か潰したけど無料でもっと品質いいレポート出してくれる
なら使ってみるわ。

393 :デフォルトの名無しさん:2013/11/24(日) 18:03:27.79
濃さによるが代替は無理だな
まあ気になるなら使ってみ

394 :デフォルトの名無しさん:2013/11/24(日) 18:18:05.61
>>387
ライブラリーは関係ないだろ。
まあ、言ってることには同意する。

>>392
Sonar って、CodeSonar のことか?
なら、QAC++ の代替えは無理。
同じ静的解析だけど、方向性が違う。

395 :デフォルトの名無しさん:2013/11/24(日) 18:28:51.93
QACの代わりがオプションで済むとか思ってるやつのことは何も信じられないwww

396 :デフォルトの名無しさん:2013/11/24(日) 18:41:17.50
>>366
gcc なら -Wswitch-enum もある

397 :デフォルトの名無しさん:2013/11/24(日) 18:42:46.20
-Wallに入っている。

398 :デフォルトの名無しさん:2013/11/24(日) 19:12:52.41
PGReliefっての使ってる
やっぱQACのがメジャーだわな

399 :デフォルトの名無しさん:2013/11/24(日) 20:26:17.10
>>395
誰もそんなことは言ってない。
>>366 程度ならオプションで済むと言ってるだけ。
QAC 出してきた奴は、 最近知って舞い上がってる新人君。

つか、そんな理解力だとマに向いてないぞ (w

400 :デフォルトの名無しさん:2013/11/24(日) 20:27:53.48
QAC使ったこともないやつが言いそうなことだな。

401 :デフォルトの名無しさん:2013/11/24(日) 21:59:58.98
>>400
新人君乙 (w

402 :デフォルトの名無しさん:2013/11/24(日) 22:47:41.34
Gimpel1C-lintには長いことお世話になっているけど
codeSonerの方がよいですか?

403 :デフォルトの名無しさん:2013/11/24(日) 23:08:21.82
スレ違い。

404 :デフォルトの名無しさん:2013/11/25(月) 07:57:37.88
>>402
Gimpel1C-lint は初めて聞いたのでよくわからんが、取り敢えず営業に電話して CodeSonar 試させてもらえばいいと思うよ。

405 :デフォルトの名無しさん:2013/11/25(月) 10:03:16.20
http://www.grammatech.com/free-trial

406 :デフォルトの名無しさん:2013/11/25(月) 11:01:47.37
>>397
-Wswitch と -Wswitch-enum は別だよ

407 :デフォルトの名無しさん:2013/11/25(月) 11:17:12.45
Eclipse+Javaだと色々無料で揃うのに、C++さんときたら……

408 :デフォルトの名無しさん:2013/11/25(月) 11:18:46.11
vsただで揃うだろ

409 :デフォルトの名無しさん:2013/11/25(月) 11:20:11.72
>>404
すまそ。文字化けしている
http://www.gimpel.com/html/pcl.htm

410 :288:2013/11/25(月) 14:25:40.32
>>292の言う通り
ソースをキレイにするために
基底クラスのメンバー変数や関数は使わなくてもOKってことで良い?

411 :デフォルトの名無しさん:2013/11/25(月) 19:29:48.16
IT関連物は日本人製がNo1だよな
お前ら見たいな超すごいのが気合を入れ開発しているから当然か
GCC・LLVM・Clang・VS・Javaとかなんかも実質は日本人が開発って言われているし

412 :デフォルトの名無しさん:2013/11/25(月) 19:33:17.40
どこの妄言がソースだ?

413 :デフォルトの名無しさん:2013/11/25(月) 19:34:22.75
日本人は最高
チョンは消えろ

414 :デフォルトの名無しさん:2013/11/25(月) 19:46:42.58
>>411
ソースは?

415 :デフォルトの名無しさん:2013/11/25(月) 19:47:00.57
起源説

416 :デフォルトの名無しさん:2013/11/25(月) 21:11:29.34
アイム・ザッパニーズ!

417 :デフォルトの名無しさん:2013/11/25(月) 21:24:27.79
>>409
わざわざありがとう。
ところでこれって、日本代理店あるの?
直接購入?

418 :デフォルトの名無しさん:2013/11/25(月) 21:36:56.22
>>417
昔4oftech とかサザンパシフィックが扱っていた
バージョンアップは直接やりとりしています。

419 :デフォルトの名無しさん:2013/11/25(月) 22:17:49.36
>>418
なるほど、うちだと適当な商社通して買うことになるかな。
使い勝手とか、検出能力とかはどう?
ちなみにうちは、PG-Relief がメイン。

420 :デフォルトの名無しさん:2013/11/26(火) 00:51:05.53
オプソ系はコミッターの国別統計取れば分かりそうではある、取れればだけど。

421 :デフォルトの名無しさん:2013/11/26(火) 01:14:15.39
>>420
オプソ系の貢献は日本企業が強力サポートしている関係で
日本がかなりの割合占めていると言われている

422 :デフォルトの名無しさん:2013/11/26(火) 01:18:55.89
工作員おつ

423 :デフォルトの名無しさん:2013/11/26(火) 08:08:30.89
黙れ朝鮮人

424 :288:2013/11/26(火) 13:31:06.93
>>292の言う通り
ソースをキレイにするために
基底クラスのメンバー変数や関数は使わなくてもOKってことで良い?

425 :デフォルトの名無しさん:2013/11/26(火) 13:38:41.89
必要あれば使うしなければ使わないだけ

426 :デフォルトの名無しさん:2013/11/26(火) 16:27:21.99
利用されないのならそもそも基底に入れているのが間違い。

427 :デフォルトの名無しさん:2013/11/26(火) 17:04:07.77
メタボ基底

428 :デフォルトの名無しさん:2013/11/26(火) 17:09:37.46
別に使うかどうか分からなくたって「人クラス」にそれにふさわしい属性データがあったって良いと思うけど

429 :デフォルトの名無しさん:2013/11/26(火) 18:05:38.77
あ、そう。

430 :デフォルトの名無しさん:2013/11/26(火) 18:11:28.03
>>424
逆に駄目だというならその理由を示すべき。

A「再利用、拡張性、概念の整理を優先させたために
 未使用の変数が存在しています。
 何か文句はありますか?」
B「それはダメ」
A「根拠は?必然性は?」
B「…」

431 :デフォルトの名無しさん:2013/11/26(火) 18:58:25.88
メ、メモリの無駄遣い…

432 :デフォルトの名無しさん:2013/11/26(火) 19:00:58.50
必要になるまでそのクラスって作らないっしょ?
必要となったときに必要なだけの状態であればいいのでは。

433 :デフォルトの名無しさん:2013/11/26(火) 19:02:11.47
継承には強い合理性がいるってことだね

434 :デフォルトの名無しさん:2013/11/26(火) 19:37:50.54
男にだって乳首はあるんだ気にするな

435 :デフォルトの名無しさん:2013/11/26(火) 19:42:29.24
乳首弄られたら気持ちいいだろ

436 :デフォルトの名無しさん:2013/11/26(火) 20:01:21.40
そのクラスが、開発するアプリ用として作るのかライブラリとして作るのかで変わるかな。
アプリ用だったら、使わないのに実装すると、テストから漏れて、後々に引き継いだ奴が
既存実装を使おうとしてこけるとか。

437 :デフォルトの名無しさん:2013/11/26(火) 21:13:17.41
MFCのSDIでのスクロールについて教えてください
100*100で10行テキストが入るCScrollViewに、
onDrawで
int x = 0, y = 0;
for (int i = 0; i < 15; i++) {
CDC.TextOut("xxx", x, y);
y += 10;
}
として画面外まで描画した後、
SetScrollSizesで100*150とセットしてスクロールさせるようにしているのですが、
これだと当然ですが画面全体がスクロールしてしまいます。
上3行固定で下の7行をスクロールしたいんですが、(Excelのウィンドウの固定のような感じ)
どうしたらいいんでしょうか?

438 :デフォルトの名無しさん:2013/11/26(火) 21:17:01.44
スレチ

439 :デフォルトの名無しさん:2013/11/26(火) 22:24:12.10
>>432は継承などなしに
全てを詰め込んだ巨大クラスを作り出すタイプ

440 :デフォルトの名無しさん:2013/11/26(火) 22:38:59.84
>>437
スクロールバーコントロール

441 :デフォルトの名無しさん:2013/11/27(水) 07:26:55.27
>>440
スレチに反応するなボケ

442 :デフォルトの名無しさん:2013/11/27(水) 20:16:59.90
>>438
C/C++スレがhoge禁止になって機能しなくなって
C++ってことで仕方なくこのスレなんだろ。
apiに続いてC/C++スレまで基地外が原因で機能しないからな。
そして、hoge基地の次のターゲットはここだろな

443 :デフォルトの名無しさん:2013/11/27(水) 20:40:10.45
適切なのはC/C++スレでもなくMFCスレなんですがそれは

444 :デフォルトの名無しさん:2013/11/27(水) 20:53:49.53
hoge禁止になったからスレが機能しなくなったとか
hogeキチガイは頭がおかしいにも程がある

445 :デフォルトの名無しさん:2013/11/28(木) 01:05:23.34
個人的な思い込みに基づいて"hoge"の使用に過剰な反応をする人がこのスレに住み着いていて、
最近は「hoge禁止」がスレ住人の総意であるかのように見せる工作を繰り返しているようです。
あまり気にしないでやってください。

446 :デフォルトの名無しさん:2013/11/28(木) 01:07:25.93
いいからキチガイは完全スルーしろよ

447 :デフォルトの名無しさん:2013/11/28(木) 01:16:24.24
先生方、素敵なhoge++を見せてください

448 :デフォルトの名無しさん:2013/11/28(木) 07:12:42.32
お前、知能低すぎ。

449 :デフォルトの名無しさん:2013/11/28(木) 07:20:03.68
歯毛

450 :デフォルトの名無しさん:2013/11/28(木) 21:37:57.56
阿保毛

451 :デフォルトの名無しさん:2013/11/29(金) 13:17:36.07
委譲で生成したクラスは
委譲をした元のクラスを解放すれば解放される?
newで生成してるからdeleteしなきゃダメ?

452 :デフォルトの名無しさん:2013/11/29(金) 13:21:48.64
newしたらdeleteしなきゃダメに決まってんだろが

453 :デフォルトの名無しさん:2013/11/29(金) 15:15:40.38
つスマートポインタ

454 :デフォルトの名無しさん:2013/11/29(金) 17:25:19.28
コマンドライン引数で得た数値を配列の要素数にしたいのですが
const a = atoi(argv[1]);
int b[a];
これだと「定数式が必要です」というエラーになります
どうしたらいいでしょうか

455 :デフォルトの名無しさん:2013/11/29(金) 17:27:21.33
vector使っとけ

456 :デフォルトの名無しさん:2013/11/29(金) 17:27:31.71
「定数式が必要だっつってんだろが」

457 :デフォルトの名無しさん:2013/11/29(金) 17:30:06.52
>>454
C++はC言語と違って配列のサイズはコンパイル時に決まってないと無理
実行時にサイズが決まる場合はmalloc以外の解決法はない

>>455
vectorは配列ではない

458 :デフォルトの名無しさん:2013/11/29(金) 17:31:49.40
実行時にサイズが決まる場合はmalloc以外の解決法はない
実行時にサイズが決まる場合はmalloc以外の解決法はない
実行時にサイズが決まる場合はmalloc以外の解決法はない

459 :デフォルトの名無しさん:2013/11/29(金) 17:36:06.01
寧ろ、malloc()による安易な解決こそ避けるべきだがな。

460 :デフォルトの名無しさん:2013/11/29(金) 17:37:08.31
> C++はC言語と違って

えっ?
Cって実行時に配列のサイズ決められるの?

461 :デフォルトの名無しさん:2013/11/29(金) 17:38:22.75
まあC++の文脈で説明するならまずはnew int[a]からだろうな

462 :デフォルトの名無しさん:2013/11/29(金) 17:39:50.34
c99地方の方言で実質allocaつこた配列確保があるからのう

463 :デフォルトの名無しさん:2013/11/29(金) 17:48:06.63
newしろって言いたいけど初心者過にはやらせたくないからやっぱvectorかなあ

464 :デフォルトの名無しさん:2013/11/29(金) 18:01:49.11
std::unique_ptr<int[]> n(new int[a]);

465 :デフォルトの名無しさん:2013/11/29(金) 18:11:42.83
>>464
この <int[]> を型推論させる記法というか仕様ってあるんかな

466 :デフォルトの名無しさん:2013/11/29(金) 18:50:17.11
>>463
むしろ初心者にこそ、後片付けの大切さを知ってもらうため、newしてもらうって
のもあるけどね

あと互換性無くなるけど、gcc拡張なら、動的に配列使うこと出来た気がする

467 :デフォルトの名無しさん:2013/11/29(金) 18:56:21.96
>>466
何を言うとる
何もわからないまま、俺C++得意だぜwwwwで終わり

そして初心者にきちんと物事を教える大切さを周りの人間が知る

468 :デフォルトの名無しさん:2013/11/29(金) 19:25:07.30
>>454
vector b;
b.resize(atoi(argv[1]));

469 :デフォルトの名無しさん:2013/11/29(金) 19:27:34.79
いまだに実行時に配列のサイズ決められないってC++は駄目だな

470 :デフォルトの名無しさん:2013/11/29(金) 19:29:18.91
用途の問題で必要ある時はvector使うし

471 :デフォルトの名無しさん:2013/11/29(金) 19:30:08.62
455 (配列ではなく)vector使っとけ
457 vectorは配列ではない
468 vector b; b.resize(atoi(argv[1]));

>>457>>468はコミュ障の嫌いがある

472 :デフォルトの名無しさん:2013/11/29(金) 19:30:52.49
実行時に決めたいときはvector使うし…

473 :デフォルトの名無しさん:2013/11/29(金) 19:33:17.86
Cしかできないやつが混じってるな。

474 :デフォルトの名無しさん:2013/11/29(金) 19:33:55.86
コミュ障と基地外はプログラムやる奴の持病だし

475 :デフォルトの名無しさん:2013/11/29(金) 19:54:28.75
いまってCがろくすっぽ使えない奴がC++に必死って感じなのか
自分でメモリ管理なんて出来ないよ。だからスマポ、Vector

476 :デフォルトの名無しさん:2013/11/29(金) 20:00:57.39
>>469
「可変長配列なにこれ便利www」つって何MBもスタックに置き始める馬鹿がでてくるから固定でいい

477 :デフォルトの名無しさん:2013/11/29(金) 20:08:53.48
vectorは可変長配列。

478 :デフォルトの名無しさん:2013/11/29(金) 20:16:53.65
>>476
サイズの問題じゃなかろうが
そう思い込んでるなら、おまえこそ深刻な問題を抱えているぞ

479 :デフォルトの名無しさん:2013/11/29(金) 20:22:28.05
>>476
何MBもスタックは固定長でもやるだろ。C++はそんなアホな奴でも配列使えるようにvectorを用意
C++はCをたいして使えないアホでも使えるようにしたやさしさ満点のCの拡張言語

480 :デフォルトの名無しさん:2013/11/29(金) 20:27:35.32
>>479
実行前にチェックできるかどうかは天と地ほどの差があるわ

481 :デフォルトの名無しさん:2013/11/29(金) 20:28:35.34
はあ?

482 :デフォルトの名無しさん:2013/11/29(金) 20:29:34.59
よく分からんけど念の為書いておくとvectorはヒープ領域を使う

483 :デフォルトの名無しさん:2013/11/29(金) 20:34:11.81
vector<int> b;
b.resize(atoi(argv[1]));
b[0]=12345;

実際にはresizeなんてまず使わない≒事前にサイズを知る必要がまずない。

vector<int> b;
b.push_back(12345);

484 :デフォルトの名無しさん:2013/11/29(金) 20:34:24.68
じゃあstatic int b[a]が最強だな
スタックもヒープも使わん

485 :デフォルトの名無しさん:2013/11/29(金) 20:35:29.32
って書いたけど違うな

486 :デフォルトの名無しさん:2013/11/29(金) 20:38:05.51
サイズ分かってるときはreserveしとくと速いよ

487 :デフォルトの名無しさん:2013/11/29(金) 20:39:39.58
>>460
C99も勉強しとけ

488 :デフォルトの名無しさん:2013/11/29(金) 20:40:55.13
>C++はC言語と違って配列のサイズはコンパイル時に決まってないと無理

C言語も同じだ。

>実行時にサイズが決まる場合はmalloc以外の解決法はない

vectorあるし、他にもいろいろコンテナあるし、newもある。

>vectorは配列ではない

可変長配列だ。

>「可変長配列なにこれ便利www」つって何MBもスタックに置き始める馬鹿がでてくるから固定でいい

vectorは何メガデータを入れようとも管理領域の数バイトしかスタックを消費しない。

約1名C++ができない知ったか野郎が混ざっているようだね…。

489 :デフォルトの名無しさん:2013/11/29(金) 20:42:00.61
>>479
アセンブラ原理主義のおっさんの幻影を見た

490 :デフォルトの名無しさん:2013/11/29(金) 20:43:04.50
>>486
reserveは管理領域を事前に予約するだけで、
配列のサイズは変わらないんだよ。

491 :デフォルトの名無しさん:2013/11/29(金) 20:46:12.81
> C言語も同じだ。
ちげーよバカ
vectorはrandom_access_iteratorとoperator[]を実装した列コンテナにすぎず
配列かどうかはおまえの妄想しだいだ

492 :デフォルトの名無しさん:2013/11/29(金) 20:46:17.51
>>488
お前は文脈を読む能力が絶望的だな

493 :デフォルトの名無しさん:2013/11/29(金) 20:47:11.25
mallocじゃないと動的に確保できない?
実行時に配列サイズを決められない?

こいつらmapという連想配列がC++にあることも知らなさそうだな。

494 :デフォルトの名無しさん:2013/11/29(金) 20:47:58.13
そいつら大抵内部でmalloc使ってるわけで

495 :デフォルトの名無しさん:2013/11/29(金) 20:49:25.92
>>491
配列は同じだろ。そこはvectorの話しじゃない。配列と書いてある。

496 :デフォルトの名無しさん:2013/11/29(金) 20:49:36.05
>>488
>>C++はC言語と違って配列のサイズはコンパイル時に決まってないと無理
>C言語も同じだ。
C99可変長配列

>>実行時にサイズが決まる場合はmalloc以外の解決法はない
>vectorあるし、他にもいろいろコンテナあるし、newもある。
それらはコンテナであって配列ではない
まともなC++erならきちんと分けて考えてる

>>vectorは配列ではない
>可変長配列だ。
配列ではない

>>「可変長配列なにこれ便利www」つって何MBもスタックに置き始める馬鹿がでてくるから固定でいい
>vectorは何メガデータを入れようとも管理領域の数バイトしかスタックを消費しない。
"数バイト" ではない
http://ideone.com/oB79hE

>約1名C++ができない知ったか野郎が混ざっているようだね…。
ですね

497 :デフォルトの名無しさん:2013/11/29(金) 20:50:49.28
単なる配列の動的に確保のためにmapを使うのはどうかと思う

498 :デフォルトの名無しさん:2013/11/29(金) 20:51:43.18
何メガバイトもスタックを消費すると思ってた奴は黙ってろよ。

499 :デフォルトの名無しさん:2013/11/29(金) 20:52:17.72
確保した領域へのポインタとその大きさとベクタの要素数で12バイトか

500 :デフォルトの名無しさん:2013/11/29(金) 20:53:46.68
「配列」と言ったら言語機能の配列のことを指すものだと思ったけど
「配列」と言った場合は「配列として使えるクラス全て」を含むのか?

501 :デフォルトの名無しさん:2013/11/29(金) 20:53:58.23
free() < 呼んだ?

502 :デフォルトの名無しさん:2013/11/29(金) 20:54:55.35
>>494
デフォルトのアロケータは各環境のAPI呼んで、Cライブラリのmalloc()なんか呼ばないだろう
>>496
一番下のはそもそもvectorの話じゃなかったのにかわいそうな>>476

503 :デフォルトの名無しさん:2013/11/29(金) 20:55:38.28
>>485
その延長なら ユーザー定義リソース が最凶だな
何しろ解放処理すらいらないし

504 :デフォルトの名無しさん:2013/11/29(金) 20:56:49.32
わざわざstd::arrayができてるのに
vectorを配列扱いなんてひどい

505 :デフォルトの名無しさん:2013/11/29(金) 20:58:19.53
>>501
delete free <あああああ

506 :デフォルトの名無しさん:2013/11/29(金) 20:58:35.22
>>500
言語の用語の厳密な定義の話をしているの?
それとも可変長配列を使いたいという要求をvectorが満たせるかどうかという話をしているの?

最初の質問は、要素数が動的に決まる場合はどうすればいいのかという話だったから、
当然後者だよね。なんで前者の話にすり替えるの?

507 :デフォルトの名無しさん:2013/11/29(金) 21:00:30.42
>>494
sbrk() 呼んだ〜
void* operator new(size_t size, void* pv) 呼んだ〜

508 :デフォルトの名無しさん:2013/11/29(金) 21:02:11.04
>>502
>デフォルトのアロケータは各環境のAPI呼んで、Cライブラリのmalloc()なんか呼ばないだろう

って調べたの?
VCとかdinkumwareとかnew呼んでるだけみたいなんだけど

509 :デフォルトの名無しさん:2013/11/29(金) 21:03:40.05
>>504
std::arrayは使ったことないけど、vectorは配列じゃない、
でも、C++の配列欲しいで出来たのかな。
となるとvectorは配列ってみなしてもらってないのかな

510 :デフォルトの名無しさん:2013/11/29(金) 21:06:52.08
で、dynamic arrayの話もC++にはあるんだろ?

511 :デフォルトの名無しさん:2013/11/29(金) 21:07:29.09
>>>実行時にサイズが決まる場合はmalloc以外の解決法はない
>>vectorあるし、他にもいろいろコンテナあるし、newもある。
>それらはコンテナであって配列ではない
>まともなC++erならきちんと分けて考えてる

実行時にサイズを決めたいのだからコンテナでいいだろ。
コンテナを使ってはいけない理由は?

512 :デフォルトの名無しさん:2013/11/29(金) 21:07:32.47
いらなくね?

513 :デフォルトの名無しさん:2013/11/29(金) 21:11:22.35
>>506
> コマンドライン引数で得た数値を配列の要素数にしたいのですが

って言ってるじゃん
配列を引数に取る関数に渡したいのかもしれないし
そういう用途ならVectorは使えないよね

「要素数が実行時に決まるリスト構造を扱いたいのですが」なら配列でもVectorでもいいと思うけどね。
国語って難しいね。

514 :デフォルトの名無しさん:2013/11/29(金) 21:11:32.13
配列の要素数を動的に決めたいってだけのことなのに、
vectorは配列じゃないからmalloc使えとか基地外レベルだろ。
vectorで何の不満があるんだよ。
何メガもスタック消費しないから安心して使えよw

515 :デフォルトの名無しさん:2013/11/29(金) 21:13:32.18
C++でCの配列使うって基地
普通はstd::arrayかvector

516 :デフォルトの名無しさん:2013/11/29(金) 21:14:10.52
>>513
>>>506
>> コマンドライン引数で得た数値を配列の要素数にしたいのですが
>
>って言ってるじゃん
>配列を引数に取る関数に渡したいのかもしれないし
>そういう用途ならVectorは使えないよね

コマンドライン引数って書いてあるけど…

517 :デフォルトの名無しさん:2013/11/29(金) 21:14:44.74
>>514
お前も余計なこと言って馬鹿晒してるな
素直にvector使ってもいいだろとだけ言ってりゃ良かったのに

518 :デフォルトの名無しさん:2013/11/29(金) 21:15:25.23
配列を引数にとりたくて、要素数が不定なら、
ポインタ使うだろ。

519 :デフォルトの名無しさん:2013/11/29(金) 21:15:29.10
>>516
は?

だからコマンドライン引数で配列の要素数を決めて、
それを別の関数の引数として渡す可能性もあるよな
そういう時はVector使えないよな

だから「配列の代わりにVector使えばいい」ってのはVectorで代替できる状況以外では全く意味がない回答

520 :デフォルトの名無しさん:2013/11/29(金) 21:17:04.33
>>519
>そういう時はVector使えないよな
なんで?
data()渡せばいいんじゃね

521 :デフォルトの名無しさん:2013/11/29(金) 21:17:17.04
Cスレでやれよ

522 :デフォルトの名無しさん:2013/11/29(金) 21:17:30.35
>>517
mallocを使わなくてもコンテナという便利なものがあることを理解できましたか?
コンテナはスタックを何メガも消費しないことは理解できましたか?

523 :デフォルトの名無しさん:2013/11/29(金) 21:18:34.02
>>519
vectorの参照を渡したらいかんの?

524 :デフォルトの名無しさん:2013/11/29(金) 21:19:25.86
>>519
data渡せばいいじゃん

525 :デフォルトの名無しさん:2013/11/29(金) 21:19:27.11
>>522
vectorは配列だと言ってしまったり、お前も無知晒したってことだよ
素直に配列馬鹿wとか言ってればよかったのに

526 :デフォルトの名無しさん:2013/11/29(金) 21:19:58.24
>>519
…もしかしてvector使ったことないとか?

527 :デフォルトの名無しさん:2013/11/29(金) 21:20:46.01
>>513
恐らく初心者でC,C++の区別よく分らない初心者が、
ここに動的配列生成の仕方を質問しただけって思う。
そして、恐らく質問はC++じゃなくC質問だったんだろうと思う

528 :デフォルトの名無しさん:2013/11/29(金) 21:20:49.12
>>519
どうしてVectorが配列を返せないと思ったの?
他の言語だってリストを配列に変換するメソッドは用意されてるだろ

529 :デフォルトの名無しさん:2013/11/29(金) 21:22:36.93
C++03でも&x[0]でいいしな

530 :デフォルトの名無しさん:2013/11/29(金) 21:26:05.32
>>528
vectorとlistは別

531 :デフォルトの名無しさん:2013/11/29(金) 21:26:20.30
>>525
俺はvectorは配列だとは言ってないな。
可変長配列だとは言ったけど。

しかし実質的にはほぼ配列として使えるぞ。
C言語の配列を取る関数にポインタを渡せるし、
何より何メガもスタックを消費しない。

532 :デフォルトの名無しさん:2013/11/29(金) 21:27:19.39
>>530
別じゃないよ

533 :デフォルトの名無しさん:2013/11/29(金) 21:29:01.97
>>531
配列として使える?
ならテンプレートで定数として使ってみろ詭弁野郎

534 :デフォルトの名無しさん:2013/11/29(金) 21:30:50.20
mallocを使わなくてもコンテナという便利なものがあることを理解できましたか?
コンテナはスタックを何メガも消費しないことは理解できましたか?
vectorはdataで生配列のポインタを得てC言語の関数に渡せることとが理解できましたか?

535 :デフォルトの名無しさん:2013/11/29(金) 21:31:35.36
リストは配列です。それも可変長だよ

536 :デフォルトの名無しさん:2013/11/29(金) 21:33:03.38
C++のlistはどう考えても配列じゃないよ
中身が別物

537 :デフォルトの名無しさん:2013/11/29(金) 21:34:18.15
スレのレベル低下が著しい
listが配列って・・

538 :デフォルトの名無しさん:2013/11/29(金) 21:37:12.75
何でこんなにカオス

539 :デフォルトの名無しさん:2013/11/29(金) 21:37:13.40
そう定義すればそうなる
人間は自由なのだから

540 :デフォルトの名無しさん:2013/11/29(金) 21:37:45.69
リストが配列というと語弊があるよな。
言語定義を厳密に考えれば「配列」ではない。

しかし実質的には配列のように扱えることもある。
ランダムアクセスせずイテレーターで上から辿れば配列っぽい。
そういう意味では抽象的な配列と言える。
そもそもイテレーターパターンが複雑なコンテナを抽象的な配列として扱うためのパターンだから当然なのだけど。

541 :デフォルトの名無しさん:2013/11/29(金) 21:39:46.87
これはひどい・・・
厳密だってお(バンバン

542 :デフォルトの名無しさん:2013/11/29(金) 21:41:56.52
そりゃやろうと思えば無理にランダムアクセスもできなくはないけどさ・・
そんなこと言ったらmapも配列か?めちゃくちゃだな

543 :デフォルトの名無しさん:2013/11/29(金) 21:42:09.60
>スレのレベル低下が著しい
>何でこんなにカオス
C/C++スレがhoge基地スレになり、そこに居た低脳がこっちに移住したからよ

544 :デフォルトの名無しさん:2013/11/29(金) 21:44:17.48
mallocを使わなくてもコンテナという便利なものがあることを理解できましたか?
コンテナはスタックを何メガも消費しないことは理解できましたか?
vectorはdataで生配列のポインタを得てC言語の関数に渡せることが理解できましたか?
>>454の要求を満たすにはvectorで十分であることは理解できましたか?

545 :デフォルトの名無しさん:2013/11/29(金) 21:45:50.99
>>542
配列だろ
つ>こいつらmapというがC++にあることも知らなさそうだな

546 :デフォルトの名無しさん:2013/11/29(金) 21:47:36.87
>>544
配列はぁーいーれすね

547 :デフォルトの名無しさん:2013/11/29(金) 21:47:41.73
>>545
日本語で頼む

548 :デフォルトの名無しさん:2013/11/29(金) 21:48:14.94
>>545
さすがに呆れてきたぞ

549 :デフォルトの名無しさん:2013/11/29(金) 21:49:16.44
unordered_array

550 :デフォルトの名無しさん:2013/11/29(金) 21:50:12.79
なんか本当にイテレータで列挙できれば配列ってことにしてるみたいですね
彼にとってはファイルシステムの抽象コレクションも配列なんでしょうね

551 :デフォルトの名無しさん:2013/11/29(金) 21:51:07.65
>>547
コピペミスした
つ > こいつらmapという連想配列がC++にあることも知らなさそうだな。
ということで配列

552 :デフォルトの名無しさん:2013/11/29(金) 21:53:42.39
いや、だからスマートポインタで配列確保すりゃ文句ねえだろ

553 :デフォルトの名無しさん:2013/11/29(金) 21:53:48.89
一体どこでどうC++を勉強したらこうなるのか疑問

554 :デフォルトの名無しさん:2013/11/29(金) 21:54:10.88
おーいバカ、Associative containersをどう訳したら連想配列になるんだよ

555 :デフォルトの名無しさん:2013/11/29(金) 21:54:28.62
>>551
ああ、本人じゃなかったのか
すまんすまん

556 :デフォルトの名無しさん:2013/11/29(金) 21:56:05.11
const a な時点でスレチだろ?

557 :デフォルトの名無しさん:2013/11/29(金) 22:00:07.62
>>553
hogeサイトですよ

>>554
containerは配列なんですよ

558 :デフォルトの名無しさん:2013/11/29(金) 22:00:36.15
配列のサイズを動的に指定するという話から脱線しすぎだぞ。

559 :デフォルトの名無しさん:2013/11/29(金) 22:02:10.16
listは配列と言い出したの俺じゃねーから。

560 :デフォルトの名無しさん:2013/11/29(金) 22:05:43.31
配列の話の流れで
vectorの中身だけポインタとしてmoveする方法ってあるの?

561 :デフォルトの名無しさん:2013/11/29(金) 22:05:50.25
vector が「配列」ではないと言っている人が、「配列」を得る方法として malloc を
挙げているように見えるんだけど合ってる?

vector の先頭要素へのポインタを配列として使うことと
malloc で確保した領域を配列として使うこととで違いがあるとは思えないんだけど、
どういう区別してんの?

562 :デフォルトの名無しさん:2013/11/29(金) 22:06:14.97
mallocでないと配列を動的に確保できないと主張している人が頑張ってスレを伸ばしているの?
vectorを配列代わりに使ってはいけない理由は何なの?

563 :デフォルトの名無しさん:2013/11/29(金) 22:06:21.55
リストカット

564 :デフォルトの名無しさん:2013/11/29(金) 22:07:09.61
>>560
ある

565 :562:2013/11/29(金) 22:07:39.76
561と質問が被ったな。

566 :デフォルトの名無しさん:2013/11/29(金) 22:08:10.31
>>560
ごめん、ポインタとして、か
無いかも

567 :デフォルトの名無しさん:2013/11/29(金) 22:09:03.85
vectorは配列じゃないがvector使えと言ってるのがいるんだろ

568 :デフォルトの名無しさん:2013/11/29(金) 22:09:38.05
>>567
どこにいるんだよ

569 :デフォルトの名無しさん:2013/11/29(金) 22:14:17.47
最初のキチガイが出て来なくなっただけだ
俺はvector使うことには賛成の上で
vectorは配列じゃないと言ってるだけだ馬鹿

570 :デフォルトの名無しさん:2013/11/29(金) 22:19:00.66
お前らが配列と信じているC++コンテナって何よ? その理由は?
std::arrayのみだ(arrayをインクルードしないのは配列といわない)
[]でアクセスできるコンテナなら配列だ([]アクセスが配列をあらわす)

571 :デフォルトの名無しさん:2013/11/29(金) 22:19:21.87
>>569

お前の主張、>>454の質問には何の役にも立たないな。
あとvectorはスタック何メガも消費しないからな。

572 :デフォルトの名無しさん:2013/11/29(金) 22:21:26.08
>>571
まだ言ってるw
無知を煽るつもりが無知さらしえ悔しかったのか?馬鹿w

573 :デフォルトの名無しさん:2013/11/29(金) 22:23:29.41
>>571
まだ言うの?

574 :デフォルトの名無しさん:2013/11/29(金) 22:24:05.14
>>569は、コンテナを使わずにmallocを使えと言っていた、
vectorはスタックを何メガも消費すると思っていた、
vectorからデータのポインタを読んで関数に渡せないと思っていた彼なの?

575 :デフォルトの名無しさん:2013/11/29(金) 22:26:53.00
>>574
しつこい。

576 :デフォルトの名無しさん:2013/11/29(金) 22:27:28.74
>>454のシンプルな質問にどれだけ駄レスを重ねるのですか

577 :デフォルトの名無しさん:2013/11/29(金) 22:29:02.22
>>574
>>519が恐らくそのお方で俺は>>520

578 :デフォルトの名無しさん:2013/11/29(金) 22:30:09.71
>>575
認めたw 彼が認めたw
同一人物であることを認めてるわこれw

>俺はvector使うことには賛成の上で
えーmallocじゃないとって言ってたの忘れた?

579 :デフォルトの名無しさん:2013/11/29(金) 22:33:42.93
>>578
お前も醜態晒してるんだぞ馬鹿w

580 :デフォルトの名無しさん:2013/11/29(金) 22:33:45.70
馬鹿はレスしてはならないってローカリルールに書いといたら?

581 :デフォルトの名無しさん:2013/11/29(金) 22:44:36.49
>>570
メモリレイアウト
vectorは内部メモリの連続性が保証されている上で、動的にサイズを変更できる唯一のコンテナ

582 :デフォルトの名無しさん:2013/11/29(金) 22:58:50.07
mallocとnewの違いって何?

583 :デフォルトの名無しさん:2013/11/29(金) 23:03:08.74
>>582
コンストラクタが呼ばれるか否か

584 :デフォルトの名無しさん:2013/11/29(金) 23:03:33.29
template <int N>
void doSometing()
{

585 :デフォルトの名無しさん:2013/11/29(金) 23:05:40.52
}

586 :デフォルトの名無しさん:2013/11/29(金) 23:05:57.82
質問者はどっか行ってしまったのだろうか

587 :デフォルトの名無しさん:2013/11/29(金) 23:07:19.82
template <typename T, int N>
void doSometing()
{
  T [N];
なんかする
}


const a = atoi(argv[1]);
switch (a)

588 :デフォルトの名無しさん:2013/11/29(金) 23:09:47.43
template <typename T, int N>
void doSometing()
{
  T [N];
なんかする
}


const a = atoi(argv[1]);
switch (a) {

template <int N> case N:
  doSomething<int, 1>():
  break;
}

589 :デフォルトの名無しさん:2013/11/29(金) 23:17:54.47
糞スレにふさわしいクソコード

590 :デフォルトの名無しさん:2013/11/29(金) 23:21:44.05
template <typename T> catch(const T& t)
{
  ErrorHandler<T> handler;
}

591 :デフォルトの名無しさん:2013/11/29(金) 23:33:33.50
それは便利かも

592 :デフォルトの名無しさん:2013/11/29(金) 23:34:38.94
いやこれコンパイル通らないし

593 :デフォルトの名無しさん:2013/11/29(金) 23:42:15.11
>>590を右辺値参照にして野に放つ

typedef delctype(>>590) hoge;
typedef std::remove_reference<hoge> gehogeho;
return (gehogeho&&)(>>590);

594 :デフォルトの名無しさん:2013/11/29(金) 23:50:43.90
すべてをはぎ取られ、みじめに死んでいく刑、というわけか

595 :重要:2013/11/30(土) 04:31:57.31
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

596 :デフォルトの名無しさん:2013/11/30(土) 04:50:32.06
自己矛盾乙。俺もだが

597 :デフォルトの名無しさん:2013/11/30(土) 05:11:49.30
>>595
いい加減くそ寒い

598 :デフォルトの名無しさん:2013/11/30(土) 08:29:06.40
int foo(int a, int b) { return a - b; }

int arg = 10;
boost::bind(foo, 1, _1)(arg); // -9
boost::bind(foo, 1, _1)(10); //コンパイルエラー

なんでエラー?
下はリテラルじゃなくて arg+1 とかでもダメ

599 :デフォルトの名無しさん:2013/11/30(土) 08:44:28.98
ttp://ideone.com/XEE2Vi
コンパイル通ったけど

600 :デフォルトの名無しさん:2013/11/30(土) 08:49:38.10
std::bindはOKでboost::bindはダメなのか

601 :デフォルトの名無しさん:2013/11/30(土) 09:08:08.79
テンプレートを特殊化するときだけはnamespace stdの中に自分の定義を入れる事が許されるんだよね?

#include <boost/bind/arg.hpp>
namespace std {
template <> struct is_placeholder<boost::arg<1>> : integral_constant<int, 1> {};
template <> struct is_placeholder<boost::arg<2>> : integral_constant<int, 2> {};
template <> struct is_placeholder<boost::arg<3>> : integral_constant<int, 3> {};
template <> struct is_placeholder<boost::arg<4>> : integral_constant<int, 4> {};
template <> struct is_placeholder<boost::arg<5>> : integral_constant<int, 5> {};
template <> struct is_placeholder<boost::arg<6>> : integral_constant<int, 6> {};
template <> struct is_placeholder<boost::arg<7>> : integral_constant<int, 7> {};
template <> struct is_placeholder<boost::arg<8>> : integral_constant<int, 8> {};
template <> struct is_placeholder<boost::arg<9>> : integral_constant<int, 9> {};
}

とかしたいんだけど。

602 :デフォルトの名無しさん:2013/11/30(土) 09:17:04.04
やればいいじゃない

603 :デフォルトの名無しさん:2013/11/30(土) 12:02:40.01
>>600
http://d.hatena.ne.jp/Cryolite/20040907

604 :デフォルトの名無しさん:2013/11/30(土) 19:44:15.08
hogeがダメなら、hageにしようっと。エイリアスのsonnでもいい

605 :デフォルトの名無しさん:2013/11/30(土) 20:03:35.13
RFC3092で

606 :重要:2013/11/30(土) 20:05:42.66
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

607 :デフォルトの名無しさん:2013/11/30(土) 20:19:03.35
もちろん >>606 にもhogeが書き込まれているので、この発言はスルーしてくださいね

608 :デフォルトの名無しさん:2013/11/30(土) 20:38:33.13
永久再帰

609 :デフォルトの名無しさん:2013/11/30(土) 20:56:08.04
hogeを禁止することを禁止します。

610 :デフォルトの名無しさん:2013/11/30(土) 21:20:50.50
再帰に反応するやつには近親感をおぼえる
概して効率悪いし破綻も孕むけどロジック的には面白いからね

主体も客体も示さない受動形には、反吐とか殺意とかそっち系だが

611 :デフォルトの名無しさん:2013/11/30(土) 21:22:28.10
近親とか孕むとか…

612 :デフォルトの名無しさん:2013/11/30(土) 22:10:28.14
ツリー構造を辿るような処理は再帰使った方が自然だろ
馬鹿か?

613 :デフォルトの名無しさん:2013/11/30(土) 22:14:47.96
そして無限ループ、スタックオーバーフローへ・・・

614 :デフォルトの名無しさん:2013/12/01(日) 00:16:45.81
C++の処理系にも末尾再帰最適化があることはあまり知られていないようだ

615 :デフォルトの名無しさん:2013/12/01(日) 01:37:40.79
テールリカージョンの最適化を知らんやつなんていたのか?

616 :デフォルトの名無しさん:2013/12/01(日) 02:15:38.79
再帰使うなら深さは常に意識しとけよ
最大階層が不定なら強制的に抜ける処理いれとけ

617 :デフォルトの名無しさん:2013/12/01(日) 02:18:28.18
それやると処理全体が破綻する場合があるから、
そうなるとテールリカージョンを非再帰に変形は手作業だね

618 :デフォルトの名無しさん:2013/12/01(日) 02:31:18.74
不変条件わかってれば変換は難しくはない
問題は再帰構造ということが直観的にわかりにくくなる事

619 :デフォルトの名無しさん:2013/12/01(日) 02:54:41.08
それは論外
再帰の最適化は読めていてこそ成り立つこと

620 :デフォルトの名無しさん:2013/12/01(日) 03:22:42.30
読めないなんて書かれてないだろ
プログラミングするなら日本語ぐらい読めた方がいいぞ

621 :デフォルトの名無しさん:2013/12/01(日) 06:33:05.41
>>620
>プログラミングするなら日本語ぐらい読めた方がいい
hoge基地が普通のスレ住人には無理な要望って感じ

622 :デフォルトの名無しさん:2013/12/01(日) 06:44:01.91
日本語でお願いします

623 :sage:2013/12/01(日) 09:46:58.72
>>622
つ ほげ

624 :デフォルトの名無しさん:2013/12/01(日) 10:14:01.04
|
|r;;;;;ノヾ
|ヒ =r=;'<私の名は保毛
|ヽ二/
⊂ノ
|

625 :デフォルトの名無しさん:2013/12/01(日) 10:49:01.44
ε hogeがダメなら俺の出番だな… >aho

626 :デフォルトの名無しさん:2013/12/01(日) 11:33:12.30
エイホさんなにやってんの

627 :デフォルトの名無しさん:2013/12/01(日) 12:28:00.41
保毛は大事だ。C++先生にならないように保毛しよう

628 :重要:2013/12/01(日) 12:29:08.93
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

629 :デフォルトの名無しさん:2013/12/01(日) 12:49:12.40
hoge

630 :デフォルトの名無しさん:2013/12/01(日) 13:01:59.97
「hogeは禁止」をNGワードにした

631 :デフォルトの名無しさん:2013/12/01(日) 13:03:37.81
std::bind や boost::bind のコードが複雑すぎて追えない
C++のリハビリを兼ねて自分のbindを作ってみたが、むずかしー
何とか動くものができたが300行超えちゃった。
目標200行だったんだが。

632 :デフォルトの名無しさん:2013/12/01(日) 13:24:56.32
改行入れなければいいんじゃね(´・ω・`)

633 :デフォルトの名無しさん:2013/12/01(日) 13:39:34.17
いや、かなりぎちぎちに書いて316行になった。
しかも引数は5個まで縛りw

634 :デフォルトの名無しさん:2013/12/01(日) 17:01:20.73
>>613
スタックオーバーフローを避ける方法はいくらでもある

635 :デフォルトの名無しさん:2013/12/01(日) 19:56:25.78
>>631ですが、VCで動いたと思ったらideonで全然通らなくて焦ったw
微妙に違いがあるんですね

636 :デフォルトの名無しさん:2013/12/01(日) 20:09:18.21
>>635
世界を破壊してしまったか

637 :デフォルトの名無しさん:2013/12/01(日) 20:19:20.51
"Hell'o world!\n"

638 :デフォルトの名無しさん:2013/12/01(日) 21:16:02.79
>>636
破壊はしてないけどテンプレートのコンパイルエラーメッセージには精神を破壊されそうになったw
右辺値参照とかdecltypeとか新しめの機能の学習のつもりだったんだけど、
右辺値コンストラクタをどう書いていいのか、まだ確信を得られない・・・

639 :デフォルトの名無しさん:2013/12/01(日) 21:17:04.10
make world
make love

640 :デフォルトの名無しさん:2013/12/01(日) 21:23:53.47
test failed

641 :デフォルトの名無しさん:2013/12/01(日) 21:30:32.86
右辺値参照は結局ただの参照
左辺値参照となにか変わるわけではない

642 :デフォルトの名無しさん:2013/12/01(日) 21:39:18.96
hello world
hello kotonoha
delete makoto

643 :デフォルトの名無しさん:2013/12/01(日) 21:40:52.74
戻り値が右辺値になったのが嬉しかったな、もう第一引数を結果用に使う必要なくなったんや

644 :デフォルトの名無しさん:2013/12/01(日) 21:48:12.44
RVOの無い処理系だなんて

645 :デフォルトの名無しさん:2013/12/01(日) 21:52:57.15
前から右辺値にできたろ

646 :デフォルトの名無しさん:2013/12/01(日) 21:54:19.84
>>641
右辺値参照で自クラスのオブジェクトを受けるのもコピーコンストラクタっていうの?

class HaGe : public HOge {
Sage m_sage;
HaGe(HaGe&& hage) : ここ { }

コンストラクタ初期化子で何すればいいの?

647 :デフォルトの名無しさん:2013/12/01(日) 22:07:23.21
hageはどうせ死ぬんだからmoveすりゃいい

648 :デフォルトの名無しさん:2013/12/01(日) 22:17:18.89
>>647
なんとなくわかってるんだけど、それは明示的に書かなきゃダメですか?
HOgeとSageにmoveするコンストラクタがある場合、HaGeに HaGe(HaGe&&) を全く書かなかったら?
左辺値のコピコンを書かなかった場合、基底クラスとメンバのコピコンは暗黙で呼ばれてましたよね?

649 :デフォルトの名無しさん:2013/12/01(日) 22:28:27.18
>>648
>>641にある通り、右辺値だからと言って自動的に何かしてくれるわけじゃない。
テストしてみりゃわかる

650 :デフォルトの名無しさん:2013/12/01(日) 22:31:06.62
>>648
ダメに決まってんだろ
moveは暗黙でやってくんねーぞ

651 :デフォルトの名無しさん:2013/12/01(日) 22:33:32.24
>>646
m_sage(std::move(hage.m_sage))

652 :デフォルトの名無しさん:2013/12/01(日) 22:38:10.96
>>648
自分は>>631ですけど、今回ちょっと勉強していろいろわかった。
いったん右辺値で受けても、受けた変数自体は左辺値になってしまうので、さらに別な場所に右辺値として渡すときは
>>651のようにしないとダメ。
そういう仕様が望ましいんだろうけどよくわからない。これから調べる。

653 :デフォルトの名無しさん:2013/12/01(日) 22:59:23.67
>>652でFAよ
http://ideone.com/cKC2Jm

書いて気づいたがコンストラクタの呼ぶ順序一定じゃないのな

654 :デフォルトの名無しさん:2013/12/01(日) 23:09:35.10
え?

655 :デフォルトの名無しさん:2013/12/01(日) 23:10:56.32
ホゲを使う奴にマトモな人はいない

656 :デフォルトの名無しさん:2013/12/01(日) 23:26:45.17
>>652
勉強はいいが bind なんて面白くないだろ。
ラムダ式使えるようになってから存在意義なくなってるんじゃないか?

657 :デフォルトの名無しさん:2013/12/01(日) 23:28:19.81
ムーブなんて今更だよな
オブジェクトはnewしてポインタで処理を基準するのが基本だよ
現実的な話、オブジェクトのコピーなんて稀にしか使い道がない
C#やJavaのやり方が理にかなってるんだよ

658 :デフォルトの名無しさん:2013/12/01(日) 23:30:58.97
>>657
イマイチな釣りだな

659 :デフォルトの名無しさん:2013/12/01(日) 23:33:58.33
>>658
釣りじゃなくてマジな
なら聞くがオブジェクトをコピーして有用な状況ってどんな時だ?

660 :デフォルトの名無しさん:2013/12/01(日) 23:38:44.59
オブジェクトを参照で管理する方向性でプログラミングするなら
ハナから仕様として備わってる言語使えってのは強ち間違ってはいない

661 :デフォルトの名無しさん:2013/12/01(日) 23:43:59.37
>>659
オプション設定時みたいにキャンセル(状況に応じた巻き戻し)したいとかいろいろ状況ありすぎて困る
参照はいいものだが、コピーも同じぐらいいいもんだろ。釣りじゃないなら何なんだよw

662 :デフォルトの名無しさん:2013/12/01(日) 23:45:09.37
寿命の長いオブジェクトはそりゃそうするさ。
短命な値型のオブジェクトだって随所に必要だろ?

663 :デフォルトの名無しさん:2013/12/01(日) 23:49:07.13
>>662
コピーと参照の選択に寿命は関係ない

664 :デフォルトの名無しさん:2013/12/01(日) 23:50:58.76
最近オブジェクトの寿命の長短が極端に分かれてきた。
最初にマスター情報読んで構築するエンティティオブジェクトはアプリの稼働時間とほぼ同じ寿命。
それ以外は関数やメソッドのスコープ内でしか生きてない。
そいつらも名無しの一時変数だけにできないか検討中w

665 :デフォルトの名無しさん:2013/12/01(日) 23:51:19.08
>>662はconstすら理解してなさそう

666 :デフォルトの名無しさん:2013/12/01(日) 23:55:13.97
>>661,662
全く理由になってない
落第

667 :デフォルトの名無しさん:2013/12/01(日) 23:59:34.62
moveなしに c = a + b; をどうやって効率化するんだよ?
a + b で作られる一時オブジェクトがその寿命の短いオブジェクトだろうが

668 :デフォルトの名無しさん:2013/12/01(日) 23:59:36.53
オブジェクトにコピー能力を要求するのは面倒
プログラムを無意味に複雑化させるだけ

669 :デフォルトの名無しさん:2013/12/02(月) 00:01:44.47
>>668
それが理由かよww

670 :デフォルトの名無しさん:2013/12/02(月) 00:02:28.85
>>666
キミは物事を表面的にしかとらえていないね。
おおかた 「friend はカプセル化を破壊するよくない機能」なんて思ってるクチだろ?

671 :デフォルトの名無しさん:2013/12/02(月) 00:10:12.36
>>669
現実的な話をしてる
カスが作るようなゴミ虫クラスは要求されるものが小さいからコピーなんて簡単だよ
でも商業ベースでクラスを作るとなったらそうはいかない
規模がデカくて複雑なだけではなく様々な制約や予算の都合もあり素人がやるような素朴なコピーやクローンでは話にならない
そうなると複製は切り捨ててオブジェクトを参照ベースで管理した方がはるかにメリットがデカイわけだ
価値のあるクラスは大抵コピーやクローンが切り捨てられるから価値のないちっぽけなクラスがそれに合わせるべき
一貫性を保つことによって全体的なパフォーマンスや保守性がぐっと高まる

672 :デフォルトの名無しさん:2013/12/02(月) 00:16:31.14
>>662>>666>>667にきちんと答えてはいかがか
c = a + b という式において、当然aとbはconstと考えられるから変化するのはcだ。
cは新しく発生した情報をコピーまたは参照せねばならない。

新しく発生した情報を捨てずに c が参照する機能、それがムーブだ。
>>657の1行目と2行目がどれだけトンチンカンなことを言っているのかおわかりだろう。

673 :デフォルトの名無しさん:2013/12/02(月) 00:17:41.72
>>671
おまえまさか、「規模がデカくて複雑なだけではなく様々な制約がある」クラスを作ってるんじゃないだろうな?

674 :デフォルトの名無しさん:2013/12/02(月) 00:18:23.50
>>671
巨大で複雑なクラスを作る方が素人丸出しやが…
巨大で万能なクラスがあってそいつが全体の調整役を担ってるのは手続型のスタイル。オブジェクト指向には向かない

675 :デフォルトの名無しさん:2013/12/02(月) 00:18:55.01
>>672
newで済む話だろ
moveなど不要

676 :デフォルトの名無しさん:2013/12/02(月) 00:19:42.83
>>671
クラスは要求されるものが小さくなくちゃダメだぞ

分割・分割・分割、と口をすっぱくして指導されなきゃわかんないのか?

677 :デフォルトの名無しさん:2013/12/02(月) 00:20:51.36
いいよなあ
ちっぽけで簡単に管理できるクラスしか作らないやつらは気楽でよ

678 :デフォルトの名無しさん:2013/12/02(月) 00:22:19.15
>>677
ちっぽけで簡単に管理できるクラスに分割するために頭を悩ませるんだろ?
巨大で何でもできるクラスなんて誰でも作れるわ。必要な状態と機能を追加してきゃいいだけなんだから

679 :デフォルトの名無しさん:2013/12/02(月) 00:24:50.19
>>675
a + b でnewされたものを c が受け取るのが move だろうが。
まったく理解してないのだ丸わかりだぞ

680 :デフォルトの名無しさん:2013/12/02(月) 00:25:03.19
分割を繰り返せばクラスやオブジェクト間のリレーションが増える
これは逆にコピーをやりにくくするだけ
要件が元から大規模で複雑だとどうしようも無いんだよ
comにも対応しなきゃだしネットワーク接続もするし特殊なデバイスだっていじらなきゃならない
コピーなんかするのはバカな真似でしかないんだ

681 :デフォルトの名無しさん:2013/12/02(月) 00:27:17.48
>>677
どうせ大規模なデータを扱ってるとか言うんだろう

クラスの単位で「簡単に管理」ができなくなった負けの始まりなんだよ。
所有と管理の分離って知ってるか?

682 :デフォルトの名無しさん:2013/12/02(月) 00:28:18.04
>>678
そういう初心者みたいなレベルの話じゃねえのよ
適切に機能分割したってそう簡単に素朴なクラスにはならねえ
それがプロの相手にしてる仕事ってもんだ
趣味や子供のお遊びならそりゃ簡単にコピーできるとこまで分割単純化できるだろうよ

683 :デフォルトの名無しさん:2013/12/02(月) 00:29:45.11
>>679
つまりnewすりゃいいからmoveは要らんちゅう話だろ
要らん機能増やしてどうするんだ

684 :デフォルトの名無しさん:2013/12/02(月) 00:30:31.55
>>681
やれやれ
データだけなら楽なもんだよ

685 :デフォルトの名無しさん:2013/12/02(月) 00:31:17.13
> comにも対応しなきゃだしネットワーク接続もするし特殊なデバイスだっていじらなきゃならない

class ComNetWorlConnectableDeviceController; か?w

686 :デフォルトの名無しさん:2013/12/02(月) 00:35:42.82
まともな設計できない自称プロがバカ晒しててワロタ

687 :デフォルトの名無しさん:2013/12/02(月) 00:41:05.42
とコピーしやすいデータ構造にしとけよ
小さいデカイ、メンバー数が多い少ないなんてコピーの実装(保守)とは無関係だからなw

688 :デフォルトの名無しさん:2013/12/02(月) 00:41:34.85
>>682

もともとは>>657の以下の発言がもとになっていると思うが、
> オブジェクトはnewしてポインタで処理を基準するのが基本だよ
> 現実的な話、オブジェクトのコピーなんて稀にしか使い道がない

「適切に機能分割したってそう簡単に素朴なクラスにはならねえ」は正しいとしても、
そういう厄介なものに気をとられ過ぎていないか?
それはそっちで解決してくれ。
オブジェクトのコピーはその問題には役に立たないかもしれないが有用なものだ。

689 :デフォルトの名無しさん:2013/12/02(月) 00:42:44.84
friendはJavaで言うところのパッケージ内スコープをやりたい時によく使う

690 :デフォルトの名無しさん:2013/12/02(月) 00:45:46.48
>>657は言ってみればグローバル変数ですべて実装するタイプなんだと思う

691 :デフォルトの名無しさん:2013/12/02(月) 00:46:02.51
>>683
だんだん具体性に欠ける話になってきた。
c = a + b をあんたが言うような形で実装してみてくれ。
もちろんc++の話

692 :デフォルトの名無しさん:2013/12/02(月) 00:46:41.14
クラスオブジェクトにするのもスマートポインタ、参照にするのもどれも表現方法でしかない、
C#やJavaの基本参照型の言語でもディープコピーが必要になる場面があるだろ。

693 :デフォルトの名無しさん:2013/12/02(月) 00:49:34.81
ボクが今直面している厄介な問題の解決に役立たないからこの機能は無意味!
という精神だったのか

694 :デフォルトの名無しさん:2013/12/02(月) 00:52:55.79
>>692
あるだけでたまにしかつかわんし
切り捨てていい部分

695 :デフォルトの名無しさん:2013/12/02(月) 01:01:54.29
c++のmoveってディープコピーを避けるための機能だろ?
矛盾に満ちた思考だな。

696 :デフォルトの名無しさん:2013/12/02(月) 01:06:13.93
friendはより完全に近い隠蔽を果たすための機能
カプセル化を壊す、なんてのは表面的な捉え方だね。

697 :デフォルトの名無しさん:2013/12/02(月) 01:07:41.17
正解: 大抵の場合でcopyでも最適化されてmoveになるから言語仕様としては必要ない

698 :デフォルトの名無しさん:2013/12/02(月) 01:12:14.09
ans = (a + b) + (c + d);
これも最適化されるの?、
(a + b)、(c + d)の2箇所は左辺値同士の加算で、最後の3つ目は右辺値同士の加算なんだが

699 :デフォルトの名無しさん:2013/12/02(月) 01:22:52.71
>>698
なんでされないと思うの?

700 :デフォルトの名無しさん:2013/12/02(月) 01:35:54.78
moveを今日初めて知って、便利すげーー。コピーなんて要らなかったんだ!
っていう初心者が騒いでるだけだったのか

701 :デフォルトの名無しさん:2013/12/02(月) 07:46:49.19
そうみたいだね

702 :デフォルトの名無しさん:2013/12/02(月) 12:32:44.37
hogeとahoは予約語ですか?

703 :デフォルトの名無しさん:2013/12/02(月) 12:40:34.32
ahoge

704 :重要:2013/12/02(月) 14:58:08.73
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

705 :デフォルトの名無しさん:2013/12/02(月) 16:34:00.82
>>696
情報隠蔽ならfriendいるかもしれんが、
単なるカプセル化ならfriend要らんべ。

struct Path::SimpleContext{略};
void Path::Walk( Path::SimpleContext&, const MoveTo& );
void Path::Walk( Path::SimpleContext&, const LineTo& );
void Path::Walk( Path::SimpleContext&, const CurveTo<2>& );

struct Path::ComplexContext:Path::SimpleContext{略};
void Path::Walk( Path::ComplexContext&, const MoveTo& );
void Path::Walk( Path::ComplexContext&, const LineTo& );
void Path::Walk( Path::ComplexContext&, const CurveTo<2>& );
void Path::Walk( Path::ComplexContext&, const CurveTo<3>& );


template<class ComplexType> void WalkOn( const Example&, ContextType &context )
{
 Walk( context, MoveTo( Vector<2>( 0, 0 ) ) );
 Walk( context, LineTo( Vector<2>( 1, 1 ) );
 Walk( context, CurveTo<3>( Vector<2>( 0.5, 1 ), Vector<2>( 1, 1 ), Vector<2>( 0, 0 ) );
}

SimpleContext simple;
ComplexContext complex;
WalkOn( Example(), simple );
WalkOn( Example(), complex );

706 :705:2013/12/02(月) 16:36:48.53
ごめん。同じ事言ってたのに早とちりした。

707 :デフォルトの名無しさん:2013/12/02(月) 16:47:17.64
>>692
せやで。多用すんで。

#( 2 3 2 1 3 1 ) asSet asSortedCollection do:
[ :each |
 Transcript
  show: each asString;
  cr.
].

出力結果:
1
2
3

708 :デフォルトの名無しさん:2013/12/02(月) 19:34:59.53
あえてSmalltalkを例に出すところがいいね

709 :デフォルトの名無しさん:2013/12/02(月) 21:11:37.83
>>656
>ラムダ式使えるようになってから存在意義なくなってるんじゃないか?

やっぱそうなの?
でも自分的には練習になったし30%くらいは達成して満足。
 マクロを使わない -> ○
 void*を使わない -> ○
 200行以内 -> X 300行近く
 std::bindと同じ構文 -> X キモい構文
 可変個引数 templateとか使ってみる -> X 全然

710 :デフォルトの名無しさん:2013/12/02(月) 23:37:22.08
ラムダ式は高機能な分無駄なところも出てくるからbindがそのまま適用できる局面ならbindを選ぶのも良い

711 :デフォルトの名無しさん:2013/12/02(月) 23:41:54.93
いや今となってはbindに存在意義など無い

712 :709:2013/12/02(月) 23:59:56.53
欠陥に気付いた・・・

ファンクタとして operator( ) を、一応5引数までということで定義するんだけど、
operator () (void) がどうしても定義できない。
投げ出すべきか・・・

713 :デフォルトの名無しさん:2013/12/03(火) 00:12:09.36
つぶやきたいならこっち使っとけよ
https://twitter.com/

714 :デフォルトの名無しさん:2013/12/03(火) 00:16:15.28
引数なしって、それ全部bindしてんのかw

715 :デフォルトの名無しさん:2013/12/03(火) 00:28:29.68
>>697
明示的にしたことでインライン要らなくなったんだよ馬鹿

716 :デフォルトの名無しさん:2013/12/03(火) 18:48:36.57
>>713
普通の奴はそうするけど。でも、ここに居るのはhogeだよhoge。
hogeを受け入れてね

717 :デフォルトの名無しさん:2013/12/03(火) 18:56:45.54
>>716
s/o/a/g

718 :デフォルトの名無しさん:2013/12/03(火) 19:21:40.44
if (*hage==*hoge)
delete hoge;
use(hage, ETERNALLY);

719 :デフォルトの名無しさん:2013/12/03(火) 19:25:14.49
class hage : public hoge {}

720 :デフォルトの名無しさん:2013/12/03(火) 19:48:41.16
hageはC++のマスターレベルの奴を指す言葉
一方、hogeは底辺レベルを指す言葉
hage,hige,huge,hege,hogeでC++レベルをさすって日本では常識
お前、hogeだって馬鹿されたら努力してレベル上げれば良いのに、
努力しないで基地化している奴がアンチhogeだろ

721 :デフォルトの名無しさん:2013/12/03(火) 19:55:00.70
hageはStroustrupのみに許された称号
こんな駄スレに書き込んでる奴に名乗る資格はない

722 :デフォルトの名無しさん:2013/12/03(火) 20:09:16.90
やめろ!Hageたくなーい!Hageたくなああーーい!

723 :デフォルトの名無しさん:2013/12/03(火) 20:33:48.26
>>722
禿げになるまで努力しろ、保毛じゃC++は使えない。
これがhage先生の一番重要な教え。
超高脳の先生でさえ禿るまで努力したんだ

724 :デフォルトの名無しさん:2013/12/03(火) 21:07:26.26
ビヤーン先生はhigehageだろ

725 :重要:2013/12/03(火) 21:50:10.46
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

726 :デフォルトの名無しさん:2013/12/03(火) 22:00:13.58
簡単な質問お願いします。
while文なんですが、条件を書かずwhile(){ }とした場合、無限ループになるんでしょうか?
ググってもなかなか出てきません・・・

727 :デフォルトの名無しさん:2013/12/03(火) 22:00:48.83
イエス

728 :デフォルトの名無しさん:2013/12/03(火) 22:20:27.19
いつのまにか空式whileが合法に

729 :デフォルトの名無しさん:2013/12/03(火) 22:27:09.18
先輩にwhile()じゃなくて、for(;;)使えって怒られたんだけど何で?

730 :デフォルトの名無しさん:2013/12/03(火) 22:27:14.12
まじかよ。ためしてないがまじで()内trueおかなくても無限ループになるの?

731 :デフォルトの名無しさん:2013/12/03(火) 22:29:45.83
>>729
while(true)でVisualC++兄貴が文句を言うから

732 :デフォルトの名無しさん:2013/12/03(火) 22:29:47.88
エラーだね
30年以上前の K&R にも省略していいとは書いてない

733 :デフォルトの名無しさん:2013/12/03(火) 22:33:58.19
>>727
Christmas

734 :デフォルトの名無しさん:2013/12/03(火) 22:35:29.73
while⇔until とか if⇔unless のシンタクスシュガーがある言語嫌いです
馴れても未だに頭がよじれる

735 :デフォルトの名無しさん:2013/12/03(火) 22:39:37.21
VC2012でerror C2059: 構文エラー : ')'になるな
ビルドオプションで通るんかな

736 :デフォルトの名無しさん:2013/12/03(火) 22:40:15.88
>>727
プリキュア5

737 :デフォルトの名無しさん:2013/12/03(火) 22:40:20.05
[ true ] trueWhile: [].
[ true ] falseWhile: [].
これならどうよ

738 :デフォルトの名無しさん:2013/12/03(火) 22:40:57.91
>>736
よし師ね

739 :デフォルトの名無しさん:2013/12/03(火) 23:16:47.60
trueですか。ありがとうございました。・

740 :デフォルトの名無しさん:2013/12/03(火) 23:21:15.53
>>739
for(;;)を使え

741 :デフォルトの名無しさん:2013/12/03(火) 23:32:03.96
おまえら構造化プログラミング教に教化されちまったのか嘆かわしい
loop:
goto loop;

742 :デフォルトの名無しさん:2013/12/04(水) 00:05:46.07
そして関数名の接頭子が付き、ファイル名の接頭子が付き、namespaceの接頭子が付き・・・と成長するんですね分かります

743 :デフォルトの名無しさん:2013/12/04(水) 00:06:00.51
>>741
そこは setjmp/longjmpでしょ:-p

744 :デフォルトの名無しさん:2013/12/04(水) 00:22:38.10
マングリングって何かエロいよな

745 :デフォルトの名無しさん:2013/12/04(水) 00:32:22.54
型名ばっかりどんどん肥大化していく

746 :デフォルトの名無しさん:2013/12/04(水) 00:34:15.97
>>713
別にいいだろ?
やっと引数なしができた。
ついでに参照を束縛するやつもできた。

747 :デフォルトの名無しさん:2013/12/04(水) 00:50:28.08
許されん事だ。
世の中にはしていい事と悪いことがある。

748 :デフォルトの名無しさん:2013/12/04(水) 01:05:21.89
>>746
ほんと日記帳だな。みんなで日記帳しようスレ

749 :デフォルトの名無しさん:2013/12/04(水) 01:12:30.46
【終日来客なし、自宅で過ごす。】

750 :デフォルトの名無しさん:2013/12/04(水) 01:13:23.57
ああw
あとはメンバポインタだ

751 :デフォルトの名無しさん:2013/12/04(水) 01:20:18.67
そういって私は加奈子のうなじを撫でた

752 :デフォルトの名無しさん:2013/12/04(水) 01:23:00.38
プレースホルダーは後から来た変数に席をゆずらないといけないんだぜ

753 :デフォルトの名無しさん:2013/12/04(水) 01:23:03.17
昨日は仕事ではC++ついては何にもしなかった。
とういことでC++スレを見にきて、C++した気になる。
今日もC++の予定はないからここに来よう。寝る。

754 :デフォルトの名無しさん:2013/12/04(水) 01:25:36.20
・大根(半切り)
・豚こま300
・白ねぎ
・シャンプー(いつもの。あれば)

755 :デフォルトの名無しさん:2013/12/04(水) 01:30:41.67
クンっとつんのめる加奈子。
私はうなじ伸ばしたその手を首筋へと移した。

756 :デフォルトの名無しさん:2013/12/04(水) 01:46:51.19
潤んだ瞳で見つめる加奈子。
私は、加奈子の敏感な部分に手を伸ばす。

757 :デフォルトの名無しさん:2013/12/04(水) 03:26:13.83
なるほど、わかった。
C++ = ビョーン博士 = 禿げ = 保毛禁止 = hoge禁止
というわけか。

逆にみんなでhogeを使ってビョーン博士の頭の進行を食い止めようではないか。

758 :デフォルトの名無しさん:2013/12/04(水) 07:06:37.45
却下だタワケ

759 :デフォルトの名無しさん:2013/12/04(水) 07:31:25.41
いやまだ一人いる。

歯毛だ!

760 :重要:2013/12/04(水) 07:36:15.42
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

761 :デフォルトの名無しさん:2013/12/04(水) 08:19:17.44
  ∧_∧   
 ( ´∀`)< hoge

762 :デフォルトの名無しさん:2013/12/04(水) 08:32:31.47
加奈子って中年ババアの名前っぽくていまいちなんだけど

763 :デフォルトの名無しさん:2013/12/04(水) 08:45:16.68
加奈子「hoge」

764 :デフォルトの名無しさん:2013/12/04(水) 09:13:39.42
加奈子「あゝ、C++さん何てTechnicでいらっしゃるの」

765 :デフォルトの名無しさん:2013/12/04(水) 10:21:50.59
官能連続小説「初めてのC」

766 :デフォルトの名無しさん:2013/12/04(水) 10:53:53.69
最近の若い子の名前って光宙とかか。

767 :デフォルトの名無しさん:2013/12/04(水) 11:23:59.49
>>765
せんせい!
C+ C++ はなにが違うんですか

768 :デフォルトの名無しさん:2013/12/04(水) 11:30:42.04
C+ はエラーです

769 :デフォルトの名無しさん:2013/12/04(水) 11:57:56.27
C++++++ と際限なく追加しまくってる語感はあるね

770 :デフォルトの名無しさん:2013/12/04(水) 12:19:52.46
>>767
C  処女
C+  人妻
C++ 塾女

771 :デフォルトの名無しさん:2013/12/04(水) 12:32:26.42
「初めてのC 〜未來の場合〜」
「初めてのC+ 〜加奈子の場合〜」
「初めてのC++ 〜トメの場合〜」

772 :デフォルトの名無しさん:2013/12/04(水) 13:00:39.35
ill-formed

773 :デフォルトの名無しさん:2013/12/04(水) 13:00:39.62
もう H にしちゃえよ

774 :デフォルトの名無しさん:2013/12/04(水) 13:19:31.21
今の次代にC++なんて使うのは基地外しかいないってのがよく分かるスレだな

775 :デフォルトの名無しさん:2013/12/04(水) 13:25:44.94
今の現役がみんな引退している頃か・・・ どうなっているやら

776 :デフォルトの名無しさん:2013/12/04(水) 13:26:18.17
使いふるしのネタに嬉々として食いつくのは冬休みの学生だろう
初々しい

777 :デフォルトの名無しさん:2013/12/04(水) 14:18:35.45
C+hoge

778 :デフォルトの名無しさん:2013/12/04(水) 16:17:00.71
「初めてのhoge」

779 :デフォルトの名無しさん:2013/12/04(水) 17:12:31.21
>>769
C++は右辺値なので重ねて++できない

780 :デフォルトの名無しさん:2013/12/04(水) 17:28:00.32
(++c)++
これなら通る

781 :デフォルトの名無しさん:2013/12/04(水) 17:49:10.20
enum hoge{};
空の列挙型は合法ですか?

782 :重要:2013/12/04(水) 17:53:53.27
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

783 :デフォルトの名無しさん:2013/12/04(水) 17:59:00.18
Essential hoge 第3版

784 :デフォルトの名無しさん:2013/12/04(水) 18:05:27.28
名付ける必要のない識別子を例示する時にhoge以上に適切なメタ構文変数はありません
日本語なのでかなで「ほげ」としたいところですが、
これがサンプル中に出てくると非常に紛らわしくなります

int ほげ=10;
extern int はげ(int);
int ひげ=はげ(ほげ);

わかりにくいですね

int hoge=10;
extern int hage(int);
int hige=hage(hoge);

なんとわかりやすいのでしょう。というわけで名付ける必要のない識別子にはhogeをつかいましょう
foo, barなどいういう軟弱なメタ構文変数とちがいhogeシリーズは
hage, hige, huge, hege, hoge
と何も考えずに5種類もつかえます。 hogeを使いましょう

785 :デフォルトの名無しさん:2013/12/04(水) 18:09:40.46
独習hoge

786 :hoge:2013/12/04(水) 18:18:51.73
>>781
enum-head { enumerator-list(opt)}
enum-head { enumerator-list , }
となってるから、文法には矛盾しない

787 :デフォルトの名無しさん:2013/12/04(水) 18:22:59.89
hage, hige, huge, hege, hoge は見分けづらいからやめて

788 :デフォルトの名無しさん:2013/12/04(水) 18:30:08.27
「;」と「:」の方がもっと見分けづらい
キミはC++をあきらめた方が良い

789 :デフォルトの名無しさん:2013/12/04(水) 18:52:03.77
そうだな。
やめるわ

790 :デフォルトの名無しさん:2013/12/04(水) 19:01:22.25
>>779
operator ++ (int) &&; で右辺値用の後置 ++ にならんか?

791 :デフォルトの名無しさん:2013/12/04(水) 19:20:32.04
こんぽーねんとしこうって何、教えて

792 :デフォルトの名無しさん:2013/12/04(水) 19:26:00.00
C++11になって、boostでいらなくなったライブラリってある?

793 :デフォルトの名無しさん:2013/12/04(水) 19:36:34.93
boostでいらないものなんてないよ

794 :デフォルトの名無しさん:2013/12/04(水) 19:47:29.66
標準に入ったけどめんどいから放置してるわ

795 :デフォルトの名無しさん:2013/12/04(水) 20:10:52.73
お約束でboostがいらないって言っておこう

796 :デフォルトの名無しさん:2013/12/04(水) 20:22:14.69
いらないんっていうんならいらないんだろう
お前の中ではな

797 :デフォルトの名無しさん:2013/12/04(水) 20:23:34.61
BOOST_AUTOだけは書き換えたなあ

798 :デフォルトの名無しさん:2013/12/04(水) 20:25:40.35
>>792
VSまでフルC++11 + C++14の一部までサポートするようになったからな
boostは要らないとはいわないが、必要性は低下したな。

799 :デフォルトの名無しさん:2013/12/04(水) 22:15:13.86
今時って、C++11というのになってるんか。
仕事では、Cと、C++はVC++6.0だけで、あとはC#だな。

800 :デフォルトの名無しさん:2013/12/04(水) 22:38:48.83
上からboost

801 :デフォルトの名無しさん:2013/12/05(木) 00:32:34.25
>>798
vsがフル対応とか寝言は寝て言え

802 :デフォルトの名無しさん:2013/12/05(木) 00:35:21.77
VCなんて駄目コンパイラーを使っているC++erはいないからな
VSにおまけでついているのがVCだし。おまけに力なんて入れない

803 :デフォルトの名無しさん:2013/12/05(木) 00:36:29.06
>>798
そんな夢みたいな話でいたいけなwindowsユーザーを騙すのはやめてください

804 :デフォルトの名無しさん:2013/12/05(木) 01:02:19.01
winユーザー・開発者ってゆとりだからいい加減な物でも大満足って感じだろ
VC開発者にとって一番大事なのはIDEだし

805 :デフォルトの名無しさん:2013/12/05(木) 01:04:19.07
ああそうだよ
ideonで全然通んなくて途方に暮れたよ

806 :デフォルトの名無しさん:2013/12/05(木) 10:24:28.71
>>784
something
example

807 :デフォルトの名無しさん:2013/12/05(木) 10:30:07.74
VSを使う際cl.batを用意して、
Microsoft C/C++ Optimizing Compilerを
clang++に置き換えるのが通なやり方

808 :デフォルトの名無しさん:2013/12/05(木) 11:09:23.44
>>807
http://www.ishani.org/web/articles/code/clangvsx/
こんなんあるけど、茨の道すぎて投げた。

809 :デフォルトの名無しさん:2013/12/05(木) 12:12:53.06
>>808
そんなん使わなくても今は公式で用意してるだろ

810 :デフォルトの名無しさん:2013/12/05(木) 13:00:02.35
>>809
マ・ジ・で!?ちょっとググってくる。

811 :重要:2013/12/05(木) 16:26:52.16
【重要】
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

なお、hogeはNGワードに追加しておくことが強く推奨されています。

812 :デフォルトの名無しさん:2013/12/05(木) 17:00:16.66
>>807
hogeでない奴ならClang++をVSでも使っているだろうな
俺はhogeだから使ってないけど

813 :hoge:2013/12/05(木) 17:01:22.64
このスレに書き込む時は必ずhogeをどこかに入れましょう。
NGワードに登録している人には全くレスが見えず
非常に愉快なことになります。

814 :デフォルトの名無しさん:2013/12/05(木) 17:10:28.53
hageは何を使えばいいんだ?

815 :デフォルトの名無しさん:2013/12/05(木) 17:15:06.00
katsura

816 :デフォルトの名無しさん:2013/12/05(木) 17:24:40.66
名付ける必要のない識別子を例示する時にhoge以上に適切なメタ構文変数はありません
日本語なのでかなで「ほげ」としたいところですが、
これがサンプル中に出てくると非常に紛らわしくなります

int ほげ=10;
extern int はげ(int);
int ひげ=はげ(ほげ);

わかりにくいですね

int hoge=10;
extern int hage(int);
int hige=hage(hoge);

なんとわかりやすいのでしょう。というわけで名付ける必要のない識別子にはhogeをつかいましょう
foo, barなどいういう軟弱なメタ構文変数とちがいhogeシリーズは
hage, hige, huge, hege, hoge
と何も考えずに5種類もつかえます。 hogeを使いましょう

817 :デフォルトの名無しさん:2013/12/05(木) 18:50:23.35
ホゲを使う奴はキチガイとしか言いようがない

818 :デフォルトの名無しさん:2013/12/05(木) 19:08:02.20
http://www.amazon.co.jp/dp/4032323704

819 :デフォルトの名無しさん:2013/12/05(木) 20:28:12.59
818を見てわかるように
hoge使い=荒らし

820 :デフォルトの名無しさん:2013/12/05(木) 20:38:54.13
どちらかというと816が荒らし
どちらもhoge使い

821 :818:2013/12/05(木) 21:38:07.30
>>819
悪かったよ
リンク先は「ほげちゃん」ていう絵本だ
いい話だぞ

822 :デフォルトの名無しさん:2013/12/05(木) 23:12:37.94
>このスレに書き込む時は必ずhogeをどこかに入れましょう。
>NGワードに登録している人には全くレスが見えず
>非常に愉快なことになります。

ほら、愉快とか何とか言ってhogeを入れることが目的化してる
荒らしの典型だな

823 :デフォルトの名無しさん:2013/12/06(金) 02:39:29.42
ここから追い出された荒らしがいるな

【初心者歓迎】C/C++室 Ver.88【環境依存OK】
ttp://toro.2ch.net/test/read.cgi/tech/1384061494/

824 :デフォルトの名無しさん:2013/12/06(金) 19:46:52.23
アンチHogeがわいてくると、リアル基地外来たーでスレが停滞するからな

825 :デフォルトの名無しさん:2013/12/07(土) 00:44:39.01
湧いてるって言うから見に来たのに。

826 :デフォルトの名無しさん:2013/12/07(土) 01:26:02.07
>>825
hoge: 低脳、ゆとり、あほ(底辺民)、でも、犯罪を犯せば刑に処せられる
アンチhoge: リアル基地外(精神病疾患、精神崩壊者)、犯罪を犯しても起訴すらされない
だからアンチがわいたらhogeですら相手しないでさっと逃げるよ

827 :デフォルトの名無しさん:2013/12/07(土) 04:22:24.61
どちらかというと>>826が一番やばそう

828 :hoge:2013/12/07(土) 04:58:31.18
いやどう考えてもずっと同じコピペを貼り続けている811が一番ヤバい。
鬱病発症中って感じだ。
ていうかお前811だろ。

829 :デフォルトの名無しさん:2013/12/07(土) 05:37:36.59
○ お前のレスは間違っている
○ お前は低脳、基地外、精神疾患、鬱病発症中
  だと俺は考える
× お前は低脳、基地外、精神疾患、鬱病発症中
  →これは誹謗にあたり名誉毀損で訴えられる恐れがあります
   それ以前に人としてやめましょう
まあ名前欄がhogeな時点でお察しくださいかな

830 :重要:2013/12/07(土) 07:47:31.37
【重要】
hogeは禁止です。使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

831 :デフォルトの名無しさん:2013/12/07(土) 08:01:07.45
インスタンス名を参照するマクロ(たしか)を教えてください

わりとあたらしめの機能(それでも何年も前からある)で、
そういうことをまとめたページを見失ってしまったので

よろしくお願いします

832 :デフォルトの名無しさん:2013/12/07(土) 08:03:32.16
まず「インスタンス名」とやらが何を指すのか
定義を教えてください

833 :デフォルトの名無しさん:2013/12/07(土) 08:09:36.07
#define INSTANCENAME_OF(INSTANCE) (&INSTANCE)

834 :デフォルトの名無しさん:2013/12/07(土) 08:11:33.30
>>832

classA instA = new classA;

の「コード内の文字列"instA"」のことです

ほかに、「コード内の文字列"classA"」を参照することも可能だったはずです

835 :デフォルトの名無しさん:2013/12/07(土) 08:13:27.26
>>833
すいませんが違うと思います

たしか、「__」が使われていた気が・・・・



そういうことが可能になったことを知って感動した記憶があります

836 :デフォルトの名無しさん:2013/12/07(土) 08:30:36.75
たぶんC++の話じゃないと思うんだよね。
instAは変数名だよね。
これを知るのはC++の範囲では不可能なんで、記憶が誤ってると思うんだ。
記憶を書き換えられた可能性もあるね。
一方で、VSのマクロという意味なら取得できるかもしれないんだけど、
このスレで質問することじゃないんだよね。

つまり、結論だけ言うと
JSはCの二倍速い。

837 :デフォルトの名無しさん:2013/12/07(土) 08:37:26.08
>>836
Linux環境でg++でやりました

もしかしたらGCC拡張か、POSIXかもしれないですけれど

838 :デフォルトの名無しさん:2013/12/07(土) 08:38:47.82
日記いいすか?
bindを実装するって話、やっとメンバポインタまでideonで通るようになったので一区切りとします。
200行以内という目標はまったく達成できませんでした。
http://ideone.com/IwZvKM

何とか短くするアイデアない?

839 :デフォルトの名無しさん:2013/12/07(土) 08:43:34.29
VSのマクロというのはExcelのマクロと同じで、IDEのマクロなんですよね。
GCC拡張のマクロという場合、cppあるいは言語規格を拡張しているわけですよね。
これはさすがに邪悪すぎないっすか?
よく、M$の独自拡張が邪悪とか言われるわけなんですが、どうも尊師は言うことと
やることに矛盾がある。
世界を救うために地下鉄サリン事件起こすとか。
普通にありえないっすから。

840 :hoge:2013/12/07(土) 09:12:10.39
VSは別にC++専用のIDEじゃないから。

841 :デフォルトの名無しさん:2013/12/07(土) 09:27:16.58
イデじゃないよね〜。

842 :デフォルトの名無しさん:2013/12/07(土) 09:32:05.00
世界を救うとはつまり人類を死滅させるに等しい
彼はあまりにも非力だったが方向性は間違いではなかったといってもよいだろう

843 :デフォルトの名無しさん:2013/12/07(土) 09:34:00.85
FSF代表取締役社長の尊師ですか。

844 :デフォルトの名無しさん:2013/12/07(土) 10:30:34.42
スペースランナウェイ

845 :デフォルトの名無しさん:2013/12/07(土) 11:56:37.00
>>834
変数名じゃねえか。
因みにC++はクラスオブジェクトが存在しないから、
オブジェクトにインスタンスオブジェクトとクラスオブジェクトの区別がない。
インスタンスと言えばテンプレートのインスタンスを指す。

846 :デフォルトの名無しさん:2013/12/07(土) 12:00:09.80
>インスタンスオブジェクトとクラスオブジェクト

はて、それぞれどの様な概念なのか
参考までに教えていただけないでしょうか

847 :デフォルトの名無しさん:2013/12/07(土) 12:08:22.85
>>846
読んどけ
https://ja.m.wikipedia.org/wiki/Smalltalk

848 :デフォルトの名無しさん:2013/12/07(土) 12:12:01.07
845の脳内定義
 クラスオブジェクト=JAVA()のClassクラスのインスタンス
 インスタンスオブジェクト=普通のオブジェクト
 インスタンス=テンプレートクラスの実体化されたクラス定義

C++のスレでSmalltalkを語り出す池沼

849 :デフォルトの名無しさん:2013/12/07(土) 12:23:34.77
C++はオブジェクトはオブジェクトだからな
オブジェクトをインスタンスと呼ぶ風習は無いし(極一部いるが)
オブジェクトをあえてインスタンスと呼ぶ意味も無い。

850 :デフォルトの名無しさん:2013/12/07(土) 12:29:46.70
>>848
Javaのアレは単なるオブジェクトでクラスオブジェクトじゃないぞ。
クラスオブジェクトと違ってインスタンスオブジェクトと互換性がないからな。
因みにクラスオブジェクトってのは、
SmalltalkやPython、Rubyの言語仕様にも書かれてる割と一般的な用語。
C++のオブジェクトに対し言語仕様でも使われないインスタンスという
呼び方する方が、よっぽど脳内用語。

851 :デフォルトの名無しさん:2013/12/07(土) 12:36:19.67
>言語仕様でも使われない
9ページ目から登場してるようだが
An instance of each object with automatic storage duration

852 :デフォルトの名無しさん:2013/12/07(土) 12:40:33.22
>>851
それオブジェクトのインスタンスを指してるわけでオブジェクトに対しインスタンスと言ってないだろ

853 :デフォルトの名無しさん:2013/12/07(土) 12:59:47.43
C++で言うinstanceはtemplateのinstancesか単なる実体の意味合いだよ。
objectはobject。

854 :デフォルトの名無しさん:2013/12/07(土) 13:13:45.49
852=853

855 :デフォルトの名無しさん:2013/12/07(土) 13:29:16.78
どうでもいい言葉の定義の話になると伸びるねえこのスレ

856 :デフォルトの名無しさん:2013/12/07(土) 13:31:32.33
規格書を完全に把握してないと議論なんてできないんだろうな
標準化委員会の連中が規格規格言ってるの見て頭おかしいと思ってるけど
こういう流れ見てるとそれが必要なことだって感覚で理解できるわ

857 :デフォルトの名無しさん:2013/12/07(土) 13:49:03.39
質問なんですが、class内の変数値を外部から書き換えたら、
class内の予め指定した関数が自動起動、って出来るんでしょうか?

858 :デフォルトの名無しさん:2013/12/07(土) 13:51:08.40
できません

859 :デフォルトの名無しさん:2013/12/07(土) 13:55:34.56
さすがにC++ですね

860 :デフォルトの名無しさん:2013/12/07(土) 14:05:39.16
C#とかには変数書き換えたら「予め指定した関数が自動で呼び出される」なんて機能あるの?
その為にプロパティという仕組みがあるんじゃないの?

861 :デフォルトの名無しさん:2013/12/07(土) 14:07:59.18
ありません

862 :デフォルトの名無しさん:2013/12/07(土) 14:11:41.49
日本人はカタカナ用語は専門用語で厳密な定義があると勘違いしてるけど、
インスタンスなんて一般的な言葉で厳密な定義はないから。
インスタンスを実体と読み替えてみるといい。

863 :デフォルトの名無しさん:2013/12/07(土) 14:15:27.26
>>857
void Class::SetValue(int value){
m_value=value;
自動起動();
}

864 :デフォルトの名無しさん:2013/12/07(土) 14:16:30.51
>>860
PleaseCallMeOnUpateW()

865 :デフォルトの名無しさん:2013/12/07(土) 14:17:17.12
>>863
自動じゃねーじゃんw
自前で呼出してんじゃん

866 :デフォルトの名無しさん:2013/12/07(土) 14:29:01.66
>>838
コピーコンストラクタをprivateにしてんじゃファンクタとして複数の箇所で使えないよ。
と思ってもう一度見てみたら直ってるw

867 :デフォルトの名無しさん:2013/12/07(土) 16:10:35.82
>>862
主語なしならtemplateのinstanceだと思うな

868 :デフォルトの名無しさん:2013/12/07(土) 16:12:42.95
>>857
書き換えのための関数を用意して、その関数を通してしか書き換えないようにさせておいて
その関数の中で、書き換え前後に別の関数を呼ぶようにすればいいのでは?

869 :デフォルトの名無しさん:2013/12/07(土) 16:33:49.81
単にインスタンスって言われたらオブジェクトの事と受け止めるなあ俺は
テンプレートのインスタンスのことなら「テンプレートインスタンス」とか言ってもらわないと
>>867
お前は「主語」を何だと思ってるんだ?

870 :デフォルトの名無しさん:2013/12/07(土) 17:16:07.37
>>860
PropertyDescriptor

871 :デフォルトの名無しさん:2013/12/07(土) 17:49:23.42
>>865
ワロタ。そうだな。

C++はゆとり言語でないからコンストラクタ・デストラクタも
ちゃんと自前呼び出しないとだめだからな。

872 :デフォルトの名無しさん:2013/12/07(土) 20:05:53.80
m_valueをリードオンリーのページに置いてページフォルトハンドラ設定すれば、
書き換えようとしたときに指定したハンドラを自動で呼び出すことが出来る

873 :デフォルトの名無しさん:2013/12/07(土) 21:55:53.77
>>838
これ、本当に動くの…?

874 :デフォルトの名無しさん:2013/12/07(土) 22:05:40.63
>>873
「ファンクタ」の要件次第
アルゴリズムに突っ込んだときにどうなるか

875 :デフォルトの名無しさん:2013/12/07(土) 22:24:25.82
>>869
templateのinstanceだろC++でinstance化と言えばtemplateなんだから

876 :デフォルトの名無しさん:2013/12/07(土) 22:30:15.74
>>869
C++でオブジェクトをインスタンスと呼ぶ意味があるのか?
インスタンスなんて口にされたらJava上がりの初心者って
印象を受ける。

877 :デフォルトの名無しさん:2013/12/07(土) 22:38:20.24
>>876
instanceって言葉はC++が参考にしたSimulaの時代から使われているけど、Javaがどうかしたのかい?

878 :デフォルトの名無しさん:2013/12/07(土) 22:45:31.37
>>877
http://staff.um.edu.mt/jskl1/talk.html
SimulaのinstanceはC++でobjectに置き換えられたね

879 :デフォルトの名無しさん:2013/12/07(土) 22:55:33.06
>>876
OOな設計のプログラムをC++という言語で実装する
という場合には問題ないだろ

880 :デフォルトの名無しさん:2013/12/07(土) 23:15:04.01
>>862
が妥当な感覚なのでは?

881 :デフォルトの名無しさん:2013/12/07(土) 23:24:47.80
感覚が妥当であるかどうかと
正しいかどうかは同じとは限らないぞ

882 :デフォルトの名無しさん:2013/12/07(土) 23:42:02.55
>>879
ooな設計ならクラスオブジェクトもインスタンスオブジェクトも
オブジェクトでしかないのでインスタンスなんていう必要はない

883 :デフォルトの名無しさん:2013/12/07(土) 23:44:55.87
>>882
インスタンスという用語はOOとは関係ないよ
オブジェクトとインスタンスを同一視するのは知識不足を披露してるだけだよ

884 :デフォルトの名無しさん:2013/12/07(土) 23:45:09.88
徒に抽象的な議論も必要ない

インスタンスが〜
インスタンスは〜

いろんな文脈にあてはまりすぎだろ

885 :デフォルトの名無しさん:2013/12/07(土) 23:56:46.68
用語ってw
「インスタンス」はいくらなんでも普通名詞過ぎるだろ

886 :デフォルトの名無しさん:2013/12/07(土) 23:59:08.65
>>885
日常用語と法律用語の違いと同じ。普通名詞だからあらゆる文脈で同じ意味を持つとは限らない
そしてinstanceは計算機科学の論文では特定の意味を持った用語だ…

887 :デフォルトの名無しさん:2013/12/07(土) 23:59:43.18
>>884
いっそカタカナ英語なんざ使わず、
実体が〜。
実体は〜。
といってもらった方が分かりやすい。

888 :デフォルトの名無しさん:2013/12/07(土) 23:59:57.24
>>883
アナタの言うOOの定義は何ですか?
OOの議論ではインスタンスという言葉がよく使用されますが
関係ないとまで言い切る根拠が不明です

889 :デフォルトの名無しさん:2013/12/08(日) 00:01:08.71
>>886
the instanceなんて殆ど無いよ。
実体と言い替えれば済むものばっかり。

890 :デフォルトの名無しさん:2013/12/08(日) 00:03:54.20
クラスのインスタンスがオブジェクト。
テンプレートのインスタンスがテンプレートインスタンス。
単にインスタンスと言うだけではどちらの事を指しているのかは特定できない。

891 :デフォルトの名無しさん:2013/12/08(日) 00:04:40.52
おっきいおっぱい

892 :デフォルトの名無しさん:2013/12/08(日) 00:08:11.80
DBとか仮想機械関係とかカタカナ英語多すぎだろ
あれ既存の日本語で充分なものばっかだ

893 :デフォルトの名無しさん:2013/12/08(日) 00:12:31.14
>>888-889
sumimとかminekoaあたりの議論を見てみな。
彼らが引用してる論文にインスタンスの定義が載ってるから。

オブジェクト指向について語りたいならsumimのページを一通り目を通しておかなきゃ土俵にも立ててないぞー

894 :デフォルトの名無しさん:2013/12/08(日) 00:15:02.80
論文に定義があるのは、それが一般的な言葉であって複数の意味に取れてしまうから、
その論文の中でインスタンスと言ったらこういう意味であると定義したまでのことで、
論文の外でもその定義が通ると主張しているわけではない。

895 :デフォルトの名無しさん:2013/12/08(日) 00:18:31.19
>オブジェクト指向について語りたいならsumimのページを一通り目を通しておかなきゃ土俵にも立ててないぞー

なるほど「sumin=OOの定義」と考えてしまうから
他人との意志疎通が図れないのですね

896 :デフォルトの名無しさん:2013/12/08(日) 00:19:09.79
アメリカで仕事して自分自身最初に驚いたのがその表現の一貫性のなさだったから。
自分が専門用語だと思っていた言葉が一般名詞や動詞で、専門用語でなかったということの驚き。
専門用語でないから一定じゃないし、文脈によって意味が変わる。
だから「専門用語だからこう言えば確実に意味が通じる」と勘違いしないようにしないと話が通じない。

897 :デフォルトの名無しさん:2013/12/08(日) 00:22:55.36
>>894
こうやって言葉遊びで自分のプライドを守ることに固執し始めるともうダメだね。そこで成長は止まる。

>>895
単にオブジェクト指向に関する論文が多く載ってるという意味で紹介しただけだが…w
そもそも二次ソースの個人ブログ主の意見を定義と勘違いするとかありえねーだろう

>>896
そうやって自分の成功体験に酔ってその経験を絶対的な価値基準に置いてる時点でお前はもう成長止まってるんだって。
どんな情報でも「アメリカでの自分の体験」という色眼鏡抜きでは評価できない。
結果として「アメリカでの体験」から一歩も前に進めない。後ろばかり振り返って過去の自分を愛でてるだけ。

898 :デフォルトの名無しさん:2013/12/08(日) 00:24:43.77
>>893
んな下らねえもんより、禿とアランケイ直筆のOOに対する開発史を一回読め

http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html
http://www.stroustrup.com/bio.html

899 :デフォルトの名無しさん:2013/12/08(日) 00:26:45.23
オブジェクト指向という、C++の様に規格が明確でないもので
「これが正しい用語」と言いはる奴は馬鹿

900 :デフォルトの名無しさん:2013/12/08(日) 00:27:08.08
オブジェクトというとクラスのインスタンスであると一意に決まると思うけど、
これも間違い。オブジェクトも一般的な言葉の1つでしかないから文脈を意識しないと意味が変わる。
インプリメンテーションもコーディングと同義だと勘違いしていたけど、通じなくて気付いた。
法律や条例、職場の内規やゲームのルールをインプリメントできるから、「何を」インプリメントするのか明確に言わないと通じない。

901 :デフォルトの名無しさん:2013/12/08(日) 00:28:47.85
>オブジェクトというとクラスのインスタンス
900はISO/IEC 14882:2011を読み直せ

902 :デフォルトの名無しさん:2013/12/08(日) 00:31:04.78
>>899
少なくともアラン・ケイのOOは明確だ
用語も開発史の中で記載されてる。

903 :デフォルトの名無しさん:2013/12/08(日) 00:33:02.03
>>900
お前ぐらいだと思うぞ。普通実体みたいに直訳出来るような言葉を用語だとは思わないから。

904 :デフォルトの名無しさん:2013/12/08(日) 00:33:52.66
どこかの開発史で記載されているアランケイの定義に反するものは誤りと盲信しているから
他人との意志疎通が図れないのですねふむふむ

905 :デフォルトの名無しさん:2013/12/08(日) 00:36:11.27
>>904
アラン・ケイのOOで言えば当然間違いだろ

906 :デフォルトの名無しさん:2013/12/08(日) 00:38:53.74
>>904
少なくともお前のオレオレ用語よりはマシだな

907 :デフォルトの名無しさん:2013/12/08(日) 00:39:32.08
アランケイの信泰者を見分けるポイントは「JavaやC++はオブジェクト指向ではない」
「クラスはオブジェクト指向と関係ないただの言語機能」「インスタンスとオブジェクト指向は関係ない」
などの極端な主張に気を付けること。この手の主張をする奴は大抵アランケイの信泰者

908 :デフォルトの名無しさん:2013/12/08(日) 00:43:26.53
なお、本論文中でπは円周率を表し、eは自然対数の底を表すものとする。

909 :デフォルトの名無しさん:2013/12/08(日) 00:45:05.96
アラン・ケイ信者のみが「アラン・ケイでないものはOOにあらず」
という排他的な教義を信仰しているということですねふむふむ

910 :デフォルトの名無しさん:2013/12/08(日) 00:47:15.64
>>908
一方数学者はその都度用語の意味を明らかにした、ってことかw

911 :デフォルトの名無しさん:2013/12/08(日) 00:55:38.71
まぁinstanceが用語ってのは禿のOOにも無いしAlen C KeyのOOにも無い訳で、
オレオレ用語ってのはあってるわ

912 :デフォルトの名無しさん:2013/12/08(日) 00:57:33.13
>>911のようなアラン・ケイ信者のみが「アラン・ケイでないものはOOにあらず」
という排他的な教義を信仰しているのですね

913 :デフォルトの名無しさん:2013/12/08(日) 00:57:46.20
訂正
objectをinstanceとも呼ぶって用語は禿のOOにも無いしAlen C KeyのOOにも無い訳で、
オレオレ用語ってのはあってるわ

914 :デフォルトの名無しさん:2013/12/08(日) 01:24:01.47
インスタンスを「実体」と訳すのには抵抗あるなあ
C++オブジェクトの実体はクラスだろ?

915 :デフォルトの名無しさん:2013/12/08(日) 01:25:57.56
いいえ違います

916 :デフォルトの名無しさん:2013/12/08(日) 01:27:06.82
クラスを実体化した物がオブジェクト

917 :デフォルトの名無しさん:2013/12/08(日) 01:29:01.95
いいえ違います
 ○ クラスを実体化した物はオブジェクト
 × クラスを実体化した物がオブジェクト

918 :デフォルトの名無しさん:2013/12/08(日) 01:30:20.30
「実体」という言葉は哲学・宗教論争になりがちだから避けるべきだと言ってるんだよ
プラトニストやドイツ観念論者ならインスタンスは実体ではあり得ないと言うだろう
もっと適切な言葉がある筈

919 :デフォルトの名無しさん:2013/12/08(日) 01:33:06.59
「実体」の英訳で最初に出てくるのは「substance」なんだから

920 :デフォルトの名無しさん:2013/12/08(日) 01:49:13.63
あくまでc++の文脈で言うなら
decltypeの引数になりえるものがオブジェクト
sizeofの引数になりえるものがインスタンス

921 :デフォルトの名無しさん:2013/12/08(日) 01:50:14.41
最初に出てくるというのと 「実体」と「substance」にどう関係があるのだ?

922 :デフォルトの名無しさん:2013/12/08(日) 01:57:13.02
>>920
どこに書いてあったの?
引用してくれ

923 :デフォルトの名無しさん:2013/12/08(日) 02:01:22.43
>>920
少なくとも辞書的には「実体」はsubstanceなのであってinstanceではないということ
言葉に拘るなら少なくともこれくらいの認識は持ってほしい
そうじゃなければこういった議論は児戯の範疇でしかない
まあ、俺はこういったエレア派起源の実体概念には異を唱える者なんだけどね

924 :デフォルトの名無しさん:2013/12/08(日) 02:09:26.11
>>923
お遊戯以外の何物だと思ってんの?
まさかここでしてる罵り合いが神聖な会議だとでも思ってたの?

925 :デフォルトの名無しさん:2013/12/08(日) 02:14:29.53
>>922
引用ってw
オレの意見を表明しただけ
自分の考えってもの無いの?

926 :デフォルトの名無しさん:2013/12/08(日) 02:26:47.39
オブジェクトが物体でインスタンスが実体なら、
物体は実体があるし実体があるものは物体だし、区別する必要があんまりないよーな。
ただ、「〜の実体」とは言うけど「〜の物体」だと微妙。

927 :デフォルトの名無しさん:2013/12/08(日) 02:27:17.29
正しくはどうなのかは知らんが
俺が最初にC++覚えたサイトでインスタンスって書いてあったから
インスタンスも許容してください。

928 :デフォルトの名無しさん:2013/12/08(日) 02:39:27.83
>>925
出典と言いたかったんだろ
ボッキキャベツが貧困なんだよ彼は

929 :デフォルトの名無しさん:2013/12/08(日) 04:40:27.16
英語圏に生まれていれば、こんなしょーもない論争で時間潰さなくて済むんだろうな
仕様書を読むにもいちいち翻訳が必要で、データとしても冗長な日本語とかいう糞
ITやるには最悪だわ

930 :デフォルトの名無しさん:2013/12/08(日) 07:29:27.60
>>901
>>オブジェクトというとクラスのインスタンス
>900はISO/IEC 14882:2011を読み直せ

>>900
>オブジェクトというとクラスのインスタンスであると一意に決まると思うけど、
>これも間違い。

意味が逆になるような引用のしかたをするなよ。

間違いだって書いてあるのにそこを切り取って意味を逆にしてから批判。

931 :デフォルトの名無しさん:2013/12/08(日) 08:07:38.67
>>920
kwsk
ちなみにsizeofは演算子であって関数ではないぞ

932 :デフォルトの名無しさん:2013/12/08(日) 08:43:20.00
数学だってそうだろ。
πとか値の定義をするときは式をそのまま提示する。
概念を定義するときは「〜を満たすもの」という形で提示する。

C++限定で
 decltypeの引数になりえるものがオブジェクト
 sizeofの引数になりえるものがインスタンス
と定義してはどうか、それでうまくいくのではないか、って考えをいってみただけ。

>>920
「演算子の引数」って変?

933 :デフォルトの名無しさん:2013/12/08(日) 08:44:14.57
おっと間違い
>>931

934 :デフォルトの名無しさん:2013/12/08(日) 09:06:55.95
なんでそんな珍妙な新解釈が必要なのか。

935 :デフォルトの名無しさん:2013/12/08(日) 09:11:20.28
C++をOOの実現手段として見たときに
C++の文法をOO的にどう解釈するかという話ならわかる。
単にC++の文法の話だったら死

936 :デフォルトの名無しさん:2013/12/08(日) 09:43:53.63
>>934
解釈と定義の違い

937 :デフォルトの名無しさん:2013/12/08(日) 11:09:45.87
>>838
tupleとか使えば?

938 :デフォルトの名無しさん:2013/12/08(日) 11:56:55.55
>>838
うわあ
ソースを見た途端目がチカチカしたのは初めてだw

でもboostもこんな感じでマジキチなんだよな

939 :838:2013/12/08(日) 12:14:11.98
>>938
短く書く、ってのが達成できなかった。
できたのは「マクロがなし」くらいだ。
マクロがいっぱいあると追う気力が失せるから、それは良かったんだけどね。

940 :デフォルトの名無しさん:2013/12/08(日) 12:19:05.36
メタプログラム書く時は自前のC++拡張言語からc++ソース吐かせるが
今時手書きなんてあるのか?

941 :838:2013/12/08(日) 12:35:27.15
>>940
kwsk

ところで親クラスのメソッドっていちいち 親クラス:: って装飾しなくても呼び出せるものじゃないんだっけ?
http://ideone.com/IwZvKM
50行目くらいからある func_signature_base の中でいちいち B:get1(): とか書かなきゃいけないのがウザい。
VCではなくても通るんだけど、ideon ではダメだったからこうしてる。
あと static long test(...); と static ILL return_t(...); も共通だから親クラスに置いときたいんだけど、それもダメ。なんで?

942 :デフォルトの名無しさん:2013/12/08(日) 13:34:30.67
>941
> ところで親クラスのメソッドっていちいち 親クラス:: って装飾しなくても呼び出せるものじゃないんだっけ?

type-dependent な基本クラスまで name lookup に行かない仕様だから。

943 :デフォルトの名無しさん:2013/12/08(日) 14:22:14.58
>>932
お前のオレオレ定義なんざどうでもいい

944 :デフォルトの名無しさん:2013/12/08(日) 14:24:50.61
>>941
C++はメソッドがないから呼び出すのは無理かな

945 :デフォルトの名無しさん:2013/12/08(日) 17:39:13.58
>>942
どうもありがとう。

親クラスに(43行目の struct func_signature_base0)で大部分の仕事をするように変更しました。
親クラスは太ったけど各サブクラスがすっきりした。

946 :デフォルトの名無しさん:2013/12/08(日) 19:28:01.05
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://engawa.2ch.net/test/read.cgi/poverty/1386476617/

947 :デフォルトの名無しさん:2013/12/08(日) 20:15:33.21
嫌儲はもう掃き溜めしかいないん?

948 :デフォルトの名無しさん:2013/12/08(日) 20:47:42.99
わしら百姓には関係ねえ話だべ

949 :デフォルトの名無しさん:2013/12/08(日) 20:59:21.09
>>941
なんかCのプリプロセッサとしてLisp使うってネタをどっかで読んだな…と思ってググってたらこんなのが出てきた
http://www.atmarkit.co.jp/news/200909/07/lltv02.html
きめぇww

950 :デフォルトの名無しさん:2013/12/08(日) 22:43:53.25
>>949
“本物のマクロ”ってこんなの?

template <typename T, bool b> struct less2 : std::less<T> {};
template <typename T> struct less2<T, false> : std::greater<T> {};

#define sort2(b, e, ope) std::sort(b, e, less2<decltype(*b), (1 ope 2)>())

int ar1[] = {8, 3, 2, 4, 9, 5, 1, 6, 7};
sort2(ar1, ar1 + 9, < ); //昇順ソート

int ar2[] = {8, 3, 2, 4, 9, 5, 1, 6, 7};
sort2(ar2, ar2 + 9, > ); //降順ソート

951 :デフォルトの名無しさん:2013/12/08(日) 23:00:44.95
マクロ愛好家は老害

952 :デフォルトの名無しさん:2013/12/08(日) 23:38:52.28
C++erって爺がほとんどでしょ

953 :デフォルトの名無しさん:2013/12/08(日) 23:44:41.38
C++er←読めない

954 :デフォルトの名無しさん:2013/12/08(日) 23:51:48.54
シープラプラサー

955 :デフォルトの名無しさん:2013/12/09(月) 00:05:07.26
Eval< S< Car, S <Quote, shrot, int, long> > >::eval value;

std::cerr << typeid( value ).name() << std::endl;

可変個引数templateとtemplate引数付きtypedefのお陰でますますtemplateによる
関数型プログラミングがしゃすくなった。

956 :デフォルトの名無しさん:2013/12/09(月) 09:28:42.98
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://engawa.2ch.net/test/read.cgi/poverty/1386476617/

957 :デフォルトの名無しさん:2013/12/09(月) 17:31:24.44
この最近よく見る排便レスはなんなの

958 :デフォルトの名無しさん:2013/12/09(月) 18:13:59.81
vector<x<int > >
こういうコードをよく見るんですが
この>>って間をあけないといけないの?

959 :デフォルトの名無しさん:2013/12/09(月) 18:17:44.69
>>958
昔はコンパイルエラー

960 :デフォルトの名無しさん:2013/12/09(月) 18:19:05.62
C++でstd::exit使う馬鹿いないよね?

961 :デフォルトの名無しさん:2013/12/09(月) 18:19:06.79
C++はMaximal-munch strategyの構文なのでトークン解析が右シフト演算子と判断しないために必要

962 :デフォルトの名無しさん:2013/12/09(月) 18:20:07.09
>>960
Cでもexit使う奴は馬鹿

963 :デフォルトの名無しさん:2013/12/09(月) 18:20:25.22
>>958
馬鹿C++コンパイラーが多かったから
vector<x<int >> とすると">>"がシフトの">>"と誤認識された。
いまのコンパイラーはvector<x<int >>でも問題ないだろう

964 :デフォルトの名無しさん:2013/12/09(月) 18:20:43.68
>>959
今は通るのか…マジか…

965 :デフォルトの名無しさん:2013/12/09(月) 18:21:47.28
どちらかというと>>963が馬鹿

966 :デフォルトの名無しさん:2013/12/09(月) 18:35:16.27
C++11だと通るよねたしかそれ

967 :デフォルトの名無しさん:2013/12/09(月) 18:36:15.52
誤判定でなくC++の文法が見直されたから

968 :デフォルトの名無しさん:2013/12/09(月) 19:01:16.47
>>949
python本体にschemeのコードを見た記憶がある

969 :デフォルトの名無しさん:2013/12/09(月) 19:10:18.90
vector<x<int > >にしないといけなかって馬鹿すぎだよな

970 :デフォルトの名無しさん:2013/12/09(月) 19:13:53.96
仕様を考えた奴が馬鹿

971 :デフォルトの名無しさん:2013/12/09(月) 19:16:22.13
bindのプレースホルダでファンクタ自体を受けられるようにしてみた

int func1(int a, int b) { return a+b; }
struct func2 { int operator()(int a, int b) const { return a*b; } };
auto b = bind(_1, 8, _2);
int c = b(&func1, 7); //15
int d = b(func2(), 7); //56

http://ideone.com/IwZvKM
これができることによって、

972 :デフォルトの名無しさん:2013/12/09(月) 19:16:32.71
コンパイラが対応したとしても次はIDEが対応しなければ何の意味もない
戦いに終わりが訪れることは決してないのだ

賢者はふっと寂しげに笑い、> > とタイプし続けるのだった

973 :デフォルトの名無しさん:2013/12/09(月) 19:23:24.98
bind何ソレうまいの?

974 :デフォルトの名無しさん:2013/12/09(月) 20:12:45.28
もともと仕様検討不足だった点を訂正したのに
戦いに終わりはないと言って直そうとしないのは残念だな

975 :デフォルトの名無しさん:2013/12/09(月) 20:19:07.60
しっかしラムダ式最強だな
ほとんど組み込みの関数オブジェクトが不要になっちゃった

976 :デフォルトの名無しさん:2013/12/09(月) 20:54:32.64
シンタックスが数ある言語の中で最も醜い
決めた奴ら100回死ねって感じ

977 :デフォルトの名無しさん:2013/12/09(月) 21:03:16.31
仕様検討不足....hogeだろ

978 :デフォルトの名無しさん:2013/12/09(月) 21:03:18.59
Pealよりマシ

979 :デフォルトの名無しさん:2013/12/09(月) 21:10:02.73
酷い酷いとはよく聞くがだったらどうすればよかったのか?と聞くと誰も答えないんだよなあ

980 :デフォルトの名無しさん:2013/12/09(月) 21:11:39.54
まずはstaticキーワードの意味の使い回しをやめるんだな

981 :デフォルトの名無しさん:2013/12/09(月) 21:15:42.52
関数宣言とコンストラクター呼び出しの区別が付く文法にすべき。

982 :デフォルトの名無しさん:2013/12/09(月) 21:17:29.51
{}で初期化できるようになったからそれはもう解決しただろ

983 :デフォルトの名無しさん:2013/12/09(月) 21:18:03.39
struct hoge{};
enum hoge{};
;がもういらない

984 :デフォルトの名無しさん:2013/12/09(月) 21:19:19.86
それは今更どうにもできないだろう

985 :デフォルトの名無しさん:2013/12/09(月) 21:20:48.00
>>984
>>979を100ぺん読み返せ
どうにかなるかどうかは関係ない

986 :デフォルトの名無しさん:2013/12/09(月) 21:22:38.18
>>979はラムダの話だろ…
スレを1からとは言わんが30前ぐらいは読み返せよ

987 :デフォルトの名無しさん:2013/12/09(月) 21:27:42.27
流れを切って申し訳ありません
2点相談させていただきたいのですが、
まずコンボボックスのイベントについて、
OnSelChangeで処理をするようにしてるのですが、直接入力する場合もあるので、
OnKillFocusでも同じ処理をしています。
しかし、コンボボックスをマウスで選択した後はフォーカスが残ったままになるので、
操作をするとOnKillFocusも呼ばれてしまい2度処理が走ってしまいます
フォーカスはそのままで、処理を1度にするには何かいい方法はないでしょうか?
2点目はCOMについてなんですが、
CLIやC#だと
using Microsoft.Office.Interop.Excel;
として、簡単にExcelを使えるんですが、
C++でCOMを使うと.Netも必要になってくるんでしょうか?
COMについてはほとんど知識がないもので見当違いかもしれませんがよろしくお願いします。

988 :デフォルトの名無しさん:2013/12/09(月) 21:31:04.45
宣言と定義の基本的な仕様が場当たり的
というか いい加減だから文法が曖昧になってる気がする
typename T::kuso_tとかやっつけ感が甚だしい
T::template rebind<U>::otherとかマジきもい

989 :デフォルトの名無しさん:2013/12/09(月) 21:32:08.50
>>983 で;をなくそうとした時の弊害ってなんかあるんだっけ

990 :デフォルトの名無しさん:2013/12/09(月) 21:35:50.04
>>989
関数内でやると違和感ある

991 :デフォルトの名無しさん:2013/12/09(月) 21:36:29.19
>>987
ttp://www.bing.com/search?q=c%2B%2B+com+excel

992 :デフォルトの名無しさん:2013/12/09(月) 21:38:00.80
何でstruct hoge{}; などで最後;をつけるようにしたんだ?

993 :デフォルトの名無しさん:2013/12/09(月) 21:41:47.74
>>992
型の導入と変数の宣言をひとつのsimple declarationに
押し込んだからじゃないでしょうか
struct t {} t;
この設計がおUNKO

994 :デフォルトの名無しさん:2013/12/09(月) 21:44:53.58
>>993
ああ、それあったな。俺よく使っているのに、あほすぎだった,orz

995 :デフォルトの名無しさん:2013/12/09(月) 21:46:46.50
void fun() {
goto hell;
処理
hell:
; ←ここにセミコロン必要なのがキモいです…
}

996 :デフォルトの名無しさん:2013/12/09(月) 21:47:33.15
OnKillFocusを使うのが間違い

997 :デフォルトの名無しさん:2013/12/09(月) 21:54:56.12
[[noreturn]] virtual inline auto fun() const volatile && throw() [[noreturn]] -> decltype(i) final override;

こういう関数宣言の文法は覚えにくいです…

998 :デフォルトの名無しさん:2013/12/09(月) 22:00:28.01
>>997
C++11の気合入り関数ってそんな感じに成るのか!
hogerじゃないとhoge++11は使えないのか

999 :デフォルトの名無しさん:2013/12/09(月) 22:10:27.55
次スレ
C++相談室 part108
http://toro.2ch.net/test/read.cgi/tech/1386591136/

1000 :デフォルトの名無しさん:2013/12/09(月) 22:16:39.96
とどめだ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

193 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)