- 1 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:21:26.11 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.76【環境依存OK hibari.2ch.net/test/read.cgi/tech/1312621728/ ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
- 82 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:20:08.60 ]
- namespace ENUM{int aaa(){return 0;}int bbb(){return 1;}int ccc(){return 2;}}
typedef int(*ENUM)(); // これで全て解決だ!
- 83 名前:76 mailto:sage [2011/12/17(土) 19:22:39.05 ]
- >Aのなかにデロ〜ンとaaa bbb cccが漏れてるからそうなるわけで
つまり、enum自体はc++的なものではなくてc的なものなので、グローバルに展開されてしまうってことですね。 ただし、c++なので、クラス内や名前空間内に限定することは可能になっている、と。 納得できました。 ありがとうございます、>>79,>>80,>>81。
- 84 名前:76 mailto:sage [2011/12/17(土) 19:23:29.46 ]
- >>83 もありがとうございます。
- 85 名前:76 mailto:sage [2011/12/17(土) 19:24:10.67 ]
- ×>>83
○>>82 スレ汚し失礼しました。
- 86 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:32:25.42 ]
- 質問
C++で、GLSLのnoise関数のような関数はありますか? つまり、ある値を入に対し、決まった、予想の付かない値を返す関数なのですが
- 87 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:33:45.66 ]
- コピーコンストラクタ・operator=に関して一件教えてください。
コピーコンストラクタを用意する際には、 operator=も用意するように、 と教えていただいたので、そのようにしてました。あるとき、 そのoperator=の最後に記述する「return *this;」を忘れていました。 ところが、特に問題が出ていませんでした。 これは記述する必要がないのでしょうか?
- 88 名前: ◆QZaw55cn4c mailto:sage [2011/12/17(土) 22:36:15.47 ]
- >>86
適当なhash関数はいかが?MD5/SHA-1/2(256) とか。
- 89 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:47:36.22 ]
- >>88
ありがとうございます 検索してみるとwww.studyinghttp.net/md5このページを見つけました しばらく見て参りますが、他に良い解説サイトなどありましたらご紹介くださいませ
- 90 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 23:13:57.89 ]
- >>87
下に示すような記述をする為には、自身を返す必要があるから。 従って、代入した結果を必要としないのなら問題にならない。 -- YourClass foo, bar, baz; foo = bar = baz;
- 91 名前:65 mailto:sage [2011/12/17(土) 23:25:10.40 ]
- 「codepad」でエラーになる理由を教えていただけませんか?
codepad.org/VybcCvXY ideone.com/WA7TG
- 92 名前:65=91 mailto:sage [2011/12/17(土) 23:34:02.42 ]
- ideone.com/WA7TG
ttp://www.geocities.jp/ky_webid/cpp/library/027.html 関数のプロトタイプ宣言で、throw(ココ)に書く内容でどのような変化があるのか調べています。 ↑のページの「std::bad_exception」の説明に関して試しています。 178行目の「i2 = hoge5;」において、54行目の関数が呼ばれています。 このとき、 プロトタイプ宣言で、54,55,56のパターンや、 throwする例外オブジェクトで、60,61,62の内容を試すのですが、 「std::bad_exception」がthrowされません。 どこを修正すると説明の通り、「std::bad_exception」がthrowされるか教えていただけませんか? よろしくお願いします。
- 93 名前:65=91 mailto:sage [2011/12/17(土) 23:49:52.60 ]
- あと、
「eclipseのc++」や「ideone.com」で試した際と、 「Visual c++」で試した際と、 の間に挙動の違いがあって、205行目が、 前者で実行されない 後者で実行される のですが、何故なのでしょうか? gccでは、宣言以外の例外発生の後に即terminate(); visual c++では、プロトタイプ宣言のthrow()を無視している のでしょうか? ideone.com/qqqhp ※60行目、178行目、205行目
- 94 名前:65=91 mailto:sage [2011/12/17(土) 23:57:49.65 ]
- 最後に、(いろいろ問題出そうですが、)
158行目の 「hoge5」 とした場合に、問答無用で、 「(int)hoge5」 「int(hoge5)」 とした場合と同じにすることは可能でしょうか? 可能であれば教えてください。 (型の指定がない場合は、int(T)としたい。が、代入先がboolの場合はbool。「.」や「->」など他のoperatorも残したい。)
- 95 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:02:42.24 ]
- >>60
ありがとう
- 96 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:41:15.51 ]
- >>91
エラーの理由をみるにcodepadでは(その警告を出すなら)警告もエラー扱いする設定になってる。 そしてそのソースに対してはクラス定義でのメンバの宣言順とコンストラクタでのメンバ初期化子の順序が違うと警告がでてるからエラーになる。
- 97 名前:91 mailto:sage [2011/12/18(日) 02:53:35.67 ]
- >>96
なるほど。理解できました。ありがとうございます。 エラーの内容が続くwarningで示されていたとは。 独立しているのだと勘違いして、warningは無視していました。 codepad.org/lTFa56Ar 動きました。
- 98 名前:87 mailto:sage [2011/12/18(日) 02:57:54.25 ]
- >>90
>foo = bar = baz; { bar = baz; foo = bar; } これと等価だと思っていました。わかりやすい説明ありがとうございます。
- 99 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:16:04.70 ]
- 何度も失礼します。
codepad.org/OuxHRqHa で、41行目にエラーがあり、その内容は、 「定義されていない変数(名)へのアクセスがある」 といったものなのですが、 Visual c++ 2010 Expressで試すと、素通りされてしまいました。 利用していないメソッドの場合も確認してくれるようにするには、どのような設定をすればよいのでしょうか? Visual c++のスレは一週間くらい人大杉で書き込めませんでした。
- 100 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:38:14.38 ]
- >>99
そりゃ hoge_ が定義メンバにも無いし 継承もしてないからじゃないの?
- 101 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:54:06.53 ]
- もしかして、メモリリークって、Windowsだと、そのプロセスが終了すれば開放される?
- 102 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 04:59:59.92 ]
- Visual C++ でコンソールアプリケーションでプロジェクトを作成して、
コンソールの他に、 独立した子ウィンドウをつくって、そこでなにやら処理したいのですけど、 インスタンスハンドルやらウィンドウハンドルやら説明を読んでも読んでもさっぱりわかりません。 そんなソースを示してくれているページを知っていたら教えてください。 簡単であれば書いてくれると助かります。
- 103 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:20:53.60 ]
- 開放される
- 104 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:52:09.57 ]
- >>102です。
変な質問して申し訳ありませんでした。自己解決しました。忘れてください。
- 105 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 08:30:59.04 ]
- c++のように、演算子をオーバーロード・オーバーライドできる言語って少ないんですか?
c++しか知らなくて、Javaをはじめてみたのですけど、不便で仕方がないかなぁ、なんて…、態度でかくてすみません。
- 106 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 08:42:28.35 ]
- C#とかScalaとかHaskellとかPythonとか
- 107 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 09:48:10.70 ]
- javaもoperatorみたいなもんが
あれば良かったのにね〜 文字列は+=できるのにね
- 108 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:10:52.87 ]
- operator定義なんて邪悪でしか無いだろ
いらんわこんなもん
- 109 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:15:28.01 ]
- forr.Add(bar) とかになるん?
- 110 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:17:41.86 ]
- C++で質問です。
クラスCHogeが構造体m_hoge[5]をメンバ変数として持つ場合、 まとめて初期化することは出来ますか?
- 111 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:27:26.08 ]
- C++11なら可能
- 112 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:27:45.79 ]
- PODなら配置new
そうでないならアラインドストレージの配列にして配置new
- 113 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:28:44.51 ]
- コンストラクタ
- 114 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:32:56.34 ]
- > いらんわこんなもん
自分に必要ないなら使わなきゃいいだけなのに、 必要もないのに使って「いらんわ」ってアホすぎ。
- 115 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:37:36.67 ]
- >>114
使ってないよ なんで使ってると思ったの?
- 116 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:48:11.32 ]
- ああすまん、自分には必要ないけど、他人には必要ということが理解できないアホだったのね。
- 117 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:14:10.87 ]
- まあこんなもんに必要性感じてるアホよりマシだけどね
- 118 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:20:16.97 ]
- 感じてないよ
なんで感じてるとおもったの? (w
- 119 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:26:28.99 ]
-
7月の段階で民主党が2兆円の復興予算を組んだとき 自民党が要請した復興予算は累計17兆円 自民党の17兆が7月時点でに決定されていたのなら 今の日本はもう少し違って居た筈だ ちなみに関東大震災のときは復興予算として現在の価値にして150兆円以上を組んでいた。 この事実を知れば、予算の規模の小ささ、ましてや増税なんて奇知涯にも程があると思わざる負えない。
- 120 名前: ◆QZaw55cn4c mailto:sage [2011/12/18(日) 12:38:33.64 ]
- >>119
で、その17兆とやらの財源は?東電売却?
- 121 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:40:02.40 ]
- まー補正予算をチマチマ組むより、一気に金つぎこんだほうがいいんだろうな
- 122 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:46:58.89 ]
- >>118
誰がお前の事って言った? 日本語をちゃんと読んでレスしなよ
- 123 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 13:11:02.53 ]
- オペレーターのオーバーロードってなんかまずいの?
小規模なプログラミングやっててよく使うんだが
- 124 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 13:15:39.99 ]
- 濫用すると分かりにくいコードができる。
- 125 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 13:35:31.11 ]
- C++の方でやってるね
可読性の問題かあ 自分一人でやる分には問題ないかな
- 126 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:43:24.80 ]
- >>122
自分のことなんて思ってないよ なんで俺のことっておもったの? (w
- 127 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:01:17.97 ]
- 俺、数学とか好きだから
例えば行列クラスとか作ったりした時(C#だけど) やっぱ、operatorは欲しいよ。 いちいちC = A.Multiplicat(B)って記述より C = A * B のほうがすっきりする ようは、実装するときにちゃんとしたコードさえ かけば、operatorは良いと思う。
- 128 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:38:48.84 ]
- C = Mul(A, B)
Mul(inA, inB, out) 普通こう書くだろ行列でメンバがprivateなんてまずありえないしメンバ関数である必要ない
- 129 名前:127 mailto:sage [2011/12/18(日) 16:25:16.01 ]
- >>128
いいや、メンバは全部privateです。
- 130 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:02:24.99 ]
- C++さんも中置きにコだわらず
Lispさんのユニークな演算子を定義できると言っても過言ではありません(要は関数なんだけどね みたいな書式を併用できればよかったのに
- 131 名前:デフォルトの名無しさん [2011/12/18(日) 17:35:46.82 ]
- 個別の要素ににアクセス出来ない行列とかワロス
- 132 名前:デフォルトの名無しさん [2011/12/18(日) 20:55:57.56 ]
- わしは、晶子が好きじゃ!
- 133 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:08:11.88 ]
- >>128
>C = Mul(A, B) ダサすぎてありえないw
- 134 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 01:23:33.65 ]
- イテレータやスマートポインタがポインタと同じように扱えるという
一点だけでも演算子オーバーロードの価値がある。
- 135 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 08:26:00.25 ]
- >>134
このへんはC++ならではだよなぁ cout << なんかは賛否両論ありそうだけど
- 136 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 15:16:33.62 ]
- Visual c++の環境をEclipseから使うことってできるかな?
JavaやってみるためにEclipse使ってみたら、エディタタブの右のスクロールバーの右の キーワードのハイライトがわかりやすくて感動した。
- 137 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 15:21:54.95 ]
- Productivity Power Tools入れれば同じようなの出るよ
- 138 名前:127 mailto:sage [2011/12/19(月) 16:43:55.72 ]
- >>131
C#って書いたろ? そんなもんインデクサや、行又は列の長さくらいは public にしてるにきまってるだろ。
- 139 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 17:23:14.54 ]
- >>136
EcripseつかうならMinGWのが情報多いんでね?
- 140 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:50:04.94 ]
- operatorは初心者の俺には邪険な存在でしかない
1度目は適当に読み流してどんなもんか確認しただけだからかもしれなけど ちゃんと実行確認しながら2度目で理解出来ればいいんだけど
- 141 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:42:24.58 ]
-
朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。 捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。 >>866 14時以降に何が起きたんだ >>866 Domain Information: [ドメイン情報] a. [ドメイン名] ASAHI-NP.CO.JP e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ f. [組織名] 株式会社 朝日新聞社 これが規制されたからじゃねw −「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」− これはおそらく週刊誌さえ書けない。 「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ
- 142 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:50:40.47 ]
- >>140
Cのポインタなんかもそうだけど、最初は「そーゆーのがあるんだな」だけで良いと思うのだ operatorなんて、一部以外はそんな多用するもんでもない気がするし。
- 143 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:40:25.85 ]
- >>140
operator、始めは何この意味不明、と思ってたけど、あると確かに便利なものはあるんだ。 例えば、 ポインタを要素に含んだ構造体を複製する際、ポインタの先まで複製するってのを a = b って出来る。 a.clone(b) とかでいいんだけどね。 あと、他人が書いたコードのoperatorオーバライドは意味不明。確かに要らないと感じたりもする。
- 144 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:57:08.78 ]
- int型が何ビットになるか決めるのはコンパイラですよね?
オプションで指定したり、クロスプラットフォームだったりするから。 ja.wikipedia.org/wiki/64%E3%83%93%E3%83%83%E3%83%88 を見ると、OS単位で決まってるみたいな書き方があると感じているのだけど、 OSの層とコンパイラの層があるのかな?
- 145 名前:デフォルトの名無しさん [2011/12/20(火) 18:20:08.40 ]
- VC10で以下のヘッダーファイルはコンパイルが通るのですが、プリコンパイル済みヘッダーにしようとすると二重定義だと怒られます
回避策はないでしょうか。あるいはどこが記述が間違っているのでしょうか error LNK2005: "public: static void __cdecl Hoge<int>::FuncA(void)" (?FuncA@?$Hoge@H@@SAXXZ) は既に stdafx.obj で定義されています。 error LNK2005: "public: void __thiscall Hoge<int>::FuncB(void)" (?FuncB@?$Hoge@H@@QAEXXZ) は既に stdafx.obj で定義されています。 // Hoge.h #pragma once template<typename T> struct Hoge { static void FuncA(); void FuncB(); }; template<> void Hoge<int>::FuncA(){} template<> void Hoge<int>::FuncB(){}
- 146 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 18:38:08.84 ]
- >>145
template<> void Hoge<int>::FuncA(){} template<> void Hoge<int>::FuncB(){} これは実装ファイルに1箇所だけに書かなきゃだめ リンクエラーになる
- 147 名前:デフォルトの名無しさん [2011/12/20(火) 19:22:16.84 ]
- >>146
ありがとうございます ただ、なんとなく inline つけたら問題なく動いちゃいました インライン関数はプリコンパイルしないようになっているのだろうか
- 148 名前:デフォルトの名無しさん [2011/12/20(火) 21:11:08.53 ]
- 定数構造体配列の添字をenumとして定義するのは、どうするのがスマートでしょう?
typedef struct { BYTE value; const char* name; } STRCT; const STRCT const_array[] = { {1, "one"}, {3, "three"}, {5, "five"}, }; ↑ これらを一緒に定義したい(ONEと1と"one"を1行で定義したい) ↓ enum { ONE, THREE, FIVE }; マクロを駆使して、同じファイルを2回#includeとかしたら出来るんですが、もっといい方法は無いものかと。 Cで無理なら、C++でも可です。
- 149 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:17:50.19 ]
- struct S {
static unsigned int value; std::string name; S(unsigned int v, std::string n) : value(v), name(n) { } }; typedef S const SC; static SC ONE(1, "one"), THREE(3, "three"), FIVE(5, "five");
- 150 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:18:44.16 ]
- ×
struct S { static unsigned int value; ↓ ○ struct S { unsigned int value;
- 151 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:46:35.05 ]
- >>144
整数型のサイズを決めるのはコンパイラのみ。 ただし、コンパイラの設計がターゲットOSのAPIなどに 影響を受ける場合があるということ。
- 152 名前:デフォルトの名無しさん [2011/12/20(火) 22:28:01.19 ]
- >>149-150
ありがとうございます >S(unsigned int v, std::string n) : value(v), name(n) { } この文法、初めて見たんですが何という名前の機能になりますか? 定義してコンパイルは通ったんですが、要素にアクセスする方法が分からなくて…
- 153 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:40:38.22 ]
- >>152
ONE.value, ONE.name
- 154 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:24:23.57 ]
- >>147
inline 関数は定義がいっぱいあってもその内容が完全に同じならおk
- 155 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:28:28.64 ]
- >>148
こんな感じでがんばれ。 d.hatena.ne.jp/Cryolite/20110920#p1
- 156 名前:デフォルトの名無しさん [2011/12/21(水) 02:27:39.19 ]
- おねがいします。
引数が SIZEの関数があったので func(SIZE(CX,CY)); と記述したらエラーとなりました。 SIZE size={CX,CY}; func(size); とするとOKでした。 変数を作らずに関数に値を渡すにはどう記述すればいいのでしょうか。
- 157 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 02:31:33.13 ]
- >>156
コンパイラがC99またはC++11対応ならSIZE{CX,CY}でいけるんじゃないかな。
- 158 名前:デフォルトの名無しさん [2011/12/21(水) 03:42:27.32 ]
- >>153
ありがとう。動作しました。 こんな文法があるとは。 ただ、これらを配列としてアクセスしたかったりします。 printf(const_array[ONE].name); のように。 >>149の原理が分かってないので、応用できないというか… なにか参考URLはないでしょうか 構造体でググっても見つかりません…
- 159 名前:2011新作展示 [2011/12/21(水) 03:44:15.42 ]
- 2011新作展示
N級最高等級時計大量入荷 新品種類がそろっています。 baidurl.cn/4ye baidurl.cn/555 baidurl.cn/556 baidurl.cn/557 baidurl.cn/559
- 160 名前:144 mailto:sage [2011/12/21(水) 06:52:08.37 ]
- >>151
ありがとう
- 161 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:52:44.73 ]
- >>158
bool operator < (S const & a, S const & b) { return a.value < b.value; } std::map<S, S> make_array(void) { std::map<S, S> array; array.insert(ONE, ONE); array.insert(THREE, THREE); attay.insert(FIVE, FIVE); return array; } static std::map<S, S> const const_array = make_array(); int main(void) { std::cout << const_array[ONE].value << std::endl; std::cout << const_array[ONE].name << std::endl; }
- 162 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 23:11:15.45 ]
-
解散コールは1:55から 12.19 街頭演説、国民の怒りと危機管理への不安 www.youtube.com/watch?v=6PQf9GvXWB0 国民に罵声を浴びせられ駅前交番に避難するテレビアカヒの取材班 12/19正午 新橋駅前 blog-imgs-44.fc2.com/d/e/l/deliciousicecoffee/111219_124643_ed.jpg ,:' .l .::;',. :::;/..://:: /,':/ ', l、 .i ヽ . ,' ..::| .::;',' :;:','フ'7フ''7/ ',.ト',_|, , ',.', ,' .::::::!'''l/!:;'/ /'゙ / '! ゙;:|:、.|、| 'l . ,'. .:::::::{ l'.l/ 、_ _,. 'l/',|.';| l :::::::::::';、ヾ  ̄ `‐-‐'/! ';. ' . ! :::::::::::/ `‐、 ゝ |'゙ | | ::::::::/ \ 、_, _.,.,_ ノ::: ! 野田政権が早く終わりますように |::::/. _rl`': 、_ ///;ト,゙;:::::./ .. `´ /\\ `i;┬:////゙l゙l ヾ/ ,.:く::::::::`:、\ 〉l゙:l / !.| . /:.:.:.:\:.:.:.:.`:、ソ/:.:| | | 19日の報道ステーション /.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l livedoor.blogimg.jp/kingcurtis/imgs/e/d/ed2dbc66.jpg
- 163 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 06:29:56.60 ]
- class A{
int hoge(){} } と書いてもコンパイルエラーにならないが、 class A{ int hoge(); } int A::hoge(){} と書くと、「値を返さなければいけません」のようなコンパイルエラーになるのは何故ですか? 両者は同じではないですか?
- 164 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 06:37:16.94 ]
- ttp://codepad.org/NM2qcsIg
文句言われるけど
- 165 名前:163 mailto:sage [2011/12/22(木) 07:40:15.39 ]
- >>164
ありがとうございます。 気になったらとりあえずcodepadに行ってみるのがいい感じですね。 mingwだと良く見ると警告が出ていて、 ideon、Visual C++だと警告すら出ませんでした。 警告に対する設定の違い見たいですね。。。
- 166 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:41:49.56 ]
- 前者は呼ばれない関数だからだろ。呼べばエラーになるよ。
- 167 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:49:11.02 ]
- #include <iostream>
class A{ private: int ababababa(void) { std::cout << "hoge"; return 1; } }; int main() { A a; a.ababababa(); std::cout << "foo"; } 単体試験をしたいのですが、ababababa(void)がprivateであるためアクセスできません。 クラスを変更せずに試験を行うことは出来ませんか? クラスの内部にfriendを書く以外の方法があれば教えて欲しいです。
- 168 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:50:39.96 ]
- #define private public
- 169 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 08:48:37.01 ]
- 名前の違う、自由に改変可能な、同じ内容のクラスを作って
対象のクラスのポインタをそのクラスのポインタにキャストする
- 170 名前:167 mailto:sage [2011/12/22(木) 09:41:48.72 ]
- >#define private public
これは…。 恐ろしいものを知りました。 >名前の違う、自由に改変可能な、同じ内容のクラスを作って ちょっと労力が大きいかも。 おふたかた、ありがとうございます。 因みに、プロの方ですか?現場でもこういったことをするのですか?
- 171 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 09:43:46.66 ]
- >前者は呼ばれない関数だからだろ。呼べばエラーになるよ。
! 呼ばれなければコンパイルされないのか…。 ありがとうございます。
- 172 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 09:47:35.11 ]
- 呼ばれない関数でも普通はコンパイルされるよ。
- 173 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 10:47:13.94 ]
- >>168
背筋が凍った
- 174 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 11:56:21.38 ]
- 実際>>168がまかり通ってるような現場ってあるの?
- 175 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:18:10.65 ]
- クラスにfriendを追加したりする変更権限のある人が
テストをした方が良いと思うんだが。
- 176 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:39:19.81 ]
- >>171-172
呼ばれないメンバ関数をコンパイルしない代表は、VC++。 他人が使うクラスを作るときは要注意。
- 177 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:14:40.38 ]
- >>176
実例よろ
- 178 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:31:36.66 ]
- >>163
前者はインライン関数。 インライン関数は一部は一部文法チェックされるようだけど、 呼ばれなければ、returnがなくても怒られないね。 バイナリには含まれないから問題ない。 後者はインライン関数ではないので 呼ばれなくてもバイナリに含まれるから returnがなければ怒られる。 よって両者は異なる。
- 179 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:37:11.15 ]
- ひどいコンパイラだ…
- 180 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:46:22.31 ]
- 当然の処置だと思うがね。
インライン関数のマージ作業に意味解析済みである必要は無いというかそもそも無駄なんだから
- 181 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:54:10.81 ]
- そうかなぁ…
リリースモードならともかく、デバッグモードではちゃんとコンパイルエラーを出して欲しい。 DEFCON^h^h^h^h^h^h警告レベル4でもでなのかしら? …実験してみるかな。
- 182 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:13.29 ]
- 未使用だと言うなら警告してくれてもいいとすら思う。
|

|