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


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

C++相談室 part66



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

前スレ
C++相談室 part65
pc11.2ch.net/test/read.cgi/tech/1230341243/

488 名前:485 mailto:sage [2009/04/08(水) 21:49:40 ]
>>486
ありがとう。
コピーコンストラクタ(に限らずコンストラクタ一般)から
メンバ関数を呼び出す時、
construct中なのにメンバ関数を呼び出しても
大丈夫なのだろうかと思ったのだ。。。


489 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:51:32 ]
>>488
virtualなら気をつけないといかんかもしれんが
そうじゃないなら大概大丈夫

490 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:54:37 ]
大丈夫

491 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 21:56:15 ]
>>489
>virtualなら気をつけないといかんかもしれんが
ああ、
基底クラスのconstruct中にvirtualなメンバ関数呼ぶと
その基底クラスでの対応するメンバ関数が呼ばれるってやつね。
ありがとう。

>>490
ありがとう。

492 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:03:58 ]
C++0xは本当に後 数ヶ月で策定されるんだろうか。
されたとして、ちゃんと動作するコンパイラが出て来るのはいつだろうか。

・・・うむ、心配だ。

493 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:35:04 ]
別に心配することじゃない。
まともなコンパイラが出てから考えればいいこと。
早く出てくれないと困る事情でもあるのか?

494 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:50:26 ]
すまぽとかは早く表順になってほしいなぁ。
もうすまぽを書くために何リットルのインクを消費したことやら。
(インク?)

495 名前:492 mailto:sage [2009/04/08(水) 22:52:55 ]
>>493
>早く出てくれないと困る事情
いや、全然ないw
g++が速いかVCが速いか。

496 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:00:35 ]
>>493
IntelC++は既にlambda関数がサポートされてるんだけど、IntelC++はコンパイル遅いんでdebugはVCでreleaseはIntelでやってるとlambda関数は使えなくて残念。
boost::lambda使えば済む話ではあるんだけど。




497 名前:492 mailto:sage [2009/04/08(水) 23:12:20 ]
現在のTR1のライブラリ達は、正直なところ十分動作することが
確認されるまでは使わない方がいいんではないかと思うんだが。
それまではboostのが安心かなぁ。

でも標準に入ってる方が使うのは(気分的に)もっと楽になる事は確か。


498 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:56:20 ]
class A{
public: virtual ~A() = 0;
};

class B :public A {};

class C :public B
{
public: ~C(){};
};

gccでundefined reference to B::~B()って怒られるんだけど、Bでd-tor書かないとダメ?

499 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:13:43 ]
ごめん。純粋仮想d-torに定義書くの忘れてた

500 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:17:10 ]
俺としては以下のやり方でMyClassクラスによるstd::swap関数テンプレートの特殊化を行い、
using std::swap;
swap(x,y);
で特殊化したstd::swap<MyClass>が呼び出せるかと思ったのだが、
以下のやり方だとなにか定義がかぶっているようなことを言われてエラーになってしまう。
再現するソースは次のようなもの。
//以下はMyClass.h
class MyClass
{
char *p;
public:
void swap(MyClass &hoge);
MyClass();
~MyClass();
};
//以下はMyClass.cpp
#include <algorithm>
#include "MyClass.h"
MyClass::MyClass():p("pointer"){}
MyClass::~MyClass(){}
void MyClass::swap(MyClass &hoge)
{std::swap(this->p, hoge.p);}
namespace std
{
template<>
void swap(MyClass &lhs,MyClass &rhs)
{lhs.swap(rhs);}
}

501 名前:500 mailto:sage [2009/04/09(木) 00:18:28 ]
//以下はmain.cpp
#include <algorithm>
#include "MyClass.h"
int main()
{
MyClass x,y;

using std::swap;
swap(x,y);

return 0;
}
としたら、g++にて
MyClass.cpp:(.text+0x42): multiple definition of `void std::swap<MyClass>(MyClass&, MyClass&)'
main.cpp:(.text$_ZSt4swapI7MyClassEvRT_S2_[void std::swap<MyClass>(MyClass&, MyClass&)]+0x0): first defined here
collect2: ld returned 1 exit status
というエラーが出る。
どうしたらいい??


502 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:31:28 ]
理由は覚えてないけどstd名前空間の中でswapの特殊化しちゃだめだった気がする。
ちょっと俺も確認してくるか。

503 名前:502 mailto:sage [2009/04/09(木) 00:33:03 ]
別に駄目じゃないか。ごめんスルーしてくれ。

504 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:37:36 ]
>>485
大丈夫だけど、普通operator =ってcopy (construct) and swapで書かない?

ja.wikibooks.org/wiki/More_C%2B%2B_Idioms/%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%A6_swap(Copy-and-swap)

505 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:58:49 ]
>>500
std::swapの特殊化はヘッダに書かないと駄目だろう。
main.cppでは特殊化したstd::swapが見えないから標準のstd::swapが実体化され
MyClass.cppで特殊化した物と衝突してるんだろう。

506 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 06:57:11 ]
>>504
そうか。
コピーコンストラクタの定義に代入演算子を使うと定義が循環しちゃうのか。



507 名前:500 mailto:sage [2009/04/09(木) 06:58:19 ]
>>505
なるほど。
std::swapの特殊化をヘッダに書く場合はinline指定しないと、
そのヘッダをインクルードするたびにまたmultiple definitionってなっちゃうかな?

508 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 08:13:54 ]
>>507
いや、そういう話じゃない。

509 名前:500 mailto:sage [2009/04/09(木) 08:22:57 ]
>>508
(1)main.cppでは特殊化した定義がその前になされていないから通常通り実体化。
(2)MyClass.cppでも特殊化した。

この(1)と(2)でmultiple definitionってことか。
つーことで
MyClass.hにstd::swapの特殊化を書く(1)
main.cppでMyClass.hをインクルード
ってこと?

510 名前:508 mailto:sage [2009/04/09(木) 08:24:06 ]
>>507
あ、ヘッダに書かないといけないのは理解してるのか。ごめん

テンプレートの定義は inline じゃなくてもいいよ。 >500 の場合は inline が
適切だと思うけど。

511 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 08:25:44 ]
これが inline じゃないといけないんなら全部の関数テンプレートが
inline にならないといけなくなるな。

512 名前:インドリ [2009/04/09(木) 10:05:14 ]
blogs.wankuma.com/episteme/archive/2009/04/08/171040.aspx
d.hatena.ne.jp/faith_and_brave/20090408

513 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 10:18:24 ]
>>512
広告ウゼェ
info.2ch.net/kiyaku.html
> ・投稿者は、話題と無関係な広告の投稿に関して、相応の費用を支払うことを承諾します

514 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 10:19:49 ]
しかもマルチかよ。何のつもりだ?

515 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 10:20:30 ]
インドリしゃんに粘着する物好きもいるんですね

516 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 12:23:10 ]
>>515
粘着の意味わかってんの?



517 名前:デフォルトの名無しさん [2009/04/09(木) 14:28:38 ]
C++でGUIのプログラムを作ろうと思うんだが、お勧め開発環境はなにかないか?

518 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 14:48:04 ]
また環境も書かんと適当に訊くなあ。

519 名前:デフォルトの名無しさん [2009/04/09(木) 14:51:01 ]
>>518
OS;XP


520 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 15:00:29 ]
C++Builder(8万円くらいする)
Turbo C++(C++ Builderの無料版 機能が削られていて少し古い)
Qt Creater(マルチプラットフォームのソフトが作れる コンパイルが遅い)

521 名前:デフォルトの名無しさん [2009/04/09(木) 15:08:24 ]
>>520
turbo c++でGUIって開発できるの??

522 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 15:52:24 ]
できるよ

523 名前:500 mailto:sage [2009/04/09(木) 22:50:09 ]
>>510-511
そういえば関数テンプレートの定義は
ヘッダに書くけど、それは普通の関数の類推で
inlineじゃなきゃいけないなんて考えちゃだめなんだったな。
Effective C++に書いてあったような気がしてきた。。。
ありがとうお二方。

524 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 22:53:28 ]
「exit(0)で終了するとデストラクタが呼び出されたり呼び出されなかったりする」
っていうC++の仕様について学べるサイトを教えてください。

巻頭言 2000〜
park1.wakwak.com/~y-nagano/200001.html
一応ググったらこんなのがヒットしましたが、これ以外にも何かオススメをご存じであればお願いします。

525 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 23:10:23 ]
std::powとかhypotとかをスレッドセーフに実行したいんだけど、おみゃーらどうしてる?
軽いに越したことはないずら

526 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 23:12:13 ]
常識的に考えればスレッドセーフでないわけがない。
って書こうとしたが、errnoとか気にしている?



527 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 00:16:23 ]
あれ?そうだったの?errnoは気にしてない。
うーん、じゃあ他のところで変な風になってたのかにゃ・・・?
ありがとうござんした

528 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 02:35:26 ]
>>524 >>333-

529 名前:デフォルトの名無しさん [2009/04/10(金) 08:30:05 ]
errnoを気にするとどうなの?

530 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 11:55:32 ]
>>529
errnoはグローバル変数なので、
errno = 0;
std::pow(x, y);
if (errno != 0) { /* 失敗 */ }
みたいなコードを書いたときに、powとifの間で他のスレッドによってerrnoが変更されてしまう可能性がある
だから、errnoを気にするとpowとかはスレッドセーフじゃなくなる

たいていのコンパイラにはerrnoをTLSに置いてスレッドセーフにするオプションとかがあるけどね

531 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 15:48:35 ]
タクティカルレーザーシステム?

532 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 17:30:34 ]
>>531
いやTrue Love Storyです。

 じゃなくてThread Local Storageです。

533 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 18:05:46 ]
元気でね 頑張ってね
手紙書くね たまに会えるよね
なんでかな 寂しいのに
寂しいよと 言えなかった

534 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 19:06:46 ]
wwwwwwwwwwww

535 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 21:10:40 ]
イイハナシダナー

536 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:17:52 ]
>>530
よく分からんがerrornoへの代入って規格的に許されてたっけ?



537 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:27:30 ]
18歳以上ならeroero挿入おkだよ

538 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:32:32 ]
はいはいエロスエロス

539 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 23:13:49 ]
18歳以上なのに、いつになってもeroeroの値がインクリメントされず初期値のままです。

540 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 00:09:13 ]
>>539
君の中ではその変数は1つだけ存在すれば十分だよね。
俺達他人に迷惑書けて欲しくないから、君の実装から外には出さないで欲しいなぁ。

ってことでeroeroは自動的に0に初期化されてます。

541 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 00:15:47 ]
E2BIGになって困る

542 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 00:39:57 ]
>>540
static変数ってことか。

543 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 01:22:23 ]
>>536
大丈夫です
C99(ISO/IEC 9899:1999)の7.5の脚注170に「むしろそうするべき」って書いてある(C++の規格には「Cの規格を見てね」って書いてある)

544 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 21:07:03 ]
若干スレ違いな気がして申し訳ないんだが、
C++の書籍(他の言語は知らんけど)って正誤表無いor乏しいの多くない?

『Exceptional C++』を買ったんだけど、1ページ目から
誤植と思われる物があって困る。。。

だれか正誤表作ってくれている人とかコミュニティとか無い??

545 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 21:34:26 ]
グローバルスコープに
std::string foo();
って書いたら、
std::string型を返す、引数のない、fooという名前の関数の宣言になるの?
それとも
std::string型のfooという変数の宣言とデフォルトコンストラクタ呼び出しになるの?

546 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 21:35:50 ]
>>545
前者
C++は関数の宣言が優先



547 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 21:37:26 ]
>>546
なるほど。
ありがとう。

548 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:09:01 ]
一応書いとくけど、ローカルスコープでもクラススコープでも同じだから。
ローカルでも関数の宣言は出来るからね。

549 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:16:46 ]
これもちなみに
強制的に変数の宣言とデフォルトコンストラクタと見なさせるには

std::string (foo());

と書けばよかったような
間違ってたらすまん

550 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:27:27 ]
やってみたけどあかんかった
カッコつけても関数宣言と見なされる

std::string foo("");

と何でもいいからパラメータ付けるしかないな

551 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:47:13 ]
>>544
ぐぐれよかす
ttp://www.gotw.ca/publications/xc++-errata.htm
ttp://www.informit.com/content/images/0201615622/errata%5Cxcerrata.pdf

552 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:49:15 ]
んばば んばんば えらったえらった

553 名前:544 mailto:sage [2009/04/11(土) 23:51:04 ]
>>551
いや、日本語でググったりピアソンエデュケーション社の
Webページで検索してみたりしたんだが英語は見落としていた。

ありがとう、恩に着る。


554 名前:545 mailto:sage [2009/04/11(土) 23:55:38 ]
>>548
ローカルでは関数の宣言だけは出来るけど定義はできないんだよね。
ありがとう。

555 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 23:57:37 ]
>>550
いや、カッコつけなければいいだけ。

556 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:31:48 ]
>>555
じゃなくてstd::stringのコンストラクタ呼び出したいんだけど



557 名前:555とは別人 mailto:sage [2009/04/12(日) 00:35:04 ]
>>556
だから括弧つけなければいいなじゃないの?
std::string foo;
これでデフォルトコンストラクタ呼び出しになるでしょ?

558 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:36:12 ]
デフォルトコンストラクタの話じゃなかったのか。
デフォルトじゃないなら引き数書くのは当たり前だろ。

559 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:46:26 ]
なんだ?
未来指向なプログラムの話か?

560 名前:まとめ mailto:sage [2009/04/12(日) 00:53:22 ]
要は
1.
std::string str="hogehoge";
ならstrの宣言&"hogehoge"を引数にとるコンストラクタの呼び出しとなる。
2.
std::string str("hogehoge");
って書いてもstrの宣言&"hogehoge"を引数にとるコンストラクタの呼び出しとなる。
3.
std::string str(const char* arg);
ならstd::string型を返し、const char*を引数にとる関数strの宣言となる。

これを引数なしverにすると

1'.
std::string str;
ならstrの宣言&デフォルトコンストラクタの呼び出しとなる。
2'&3'.
std::string str();
ならstd::string型を返し、引数のない関数strの宣言となる。

ってことだよね。
たぶんこのスレのみんなは分かっているけどレスが言葉足らずでカオスになっているだけかと。

561 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 01:17:31 ]
>>556
もし、本当に「デフォルトコンストラクタを呼び出したいだけ(変数は用意したくない)」なら
std::string();
と書けば呼べるだろうね。
もちろん、ソース上には現れない一時変数が用意されるだけだけど。

普通に「デフォルトコンストラクタで初期化される変数を用意したい」ならば
皆が書いているように
std::string str;
とすれば良いだけ。

562 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:26:49 ]
純粋なC++で、初心者でもないのにgotoを使う人って見たことある?
やるとしたらスパゲッティにならないで使える人なんだろうけど。



563 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:59:10 ]
goto使えば二重三重ループから一気に抜けられるじぇ

564 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:16:02 ]
あなた天才

565 名前:562 mailto:sage [2009/04/12(日) 16:26:45 ]
まあネストしたループから一気に抜けるって使い方か。

別の方法としてわざと例外をthrowしてるヤツがいたけど
それよりはマシか。

変なフラグ変数用意するくらいならgotoのがいいのだろうか?


566 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:28:22 ]
フラグ変数なんか使うな
プログラムの見通しが悪くなる



567 名前:562 mailto:sage [2009/04/12(日) 16:31:09 ]
>>566
ですよねー。
俺もそう思うよ。

サンプルソースならともかく
flagとかhogeっていうフラグ変数を
用意しているヤツを見ると
もう頭痛がしてくる。



568 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:35:57 ]
クラス設計で、メンバ関数はどの順番で記述する?

例えば基底クラスでpolymorphicな使い方を想定しているとして。
以下public指定なものだけを書く。

class 〜〜{
1.コンストラクタをずらずらと。
2.virtual デストラクタ。
3.swap()メンバ関数
4.これら以外の普通のdo_something()メンバ関数をずらずらと。
5.operator=
6.operator+
7.以下必要ならoperator云々
};

ってな感じにすれば良い?
今ひとつ経験不足でどんな感じが良いのかわからんのだ。


569 名前:568 mailto:sage [2009/04/12(日) 16:36:50 ]
>基底クラスでpolymorphicな使い方
ってまあ要するに基底クラスのポインタに派生クラスのポインタを変換して使うつもりって言いたい。


570 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:37:32 ]
まぁ、多重ループから一撃で抜けるなら
その部分をカプソー化してれつるんで抜ける方が
スマートな気もするよね。

571 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:38:34 ]
>>570
れつるん
って南蛇井?

572 名前:571 mailto:sage [2009/04/12(日) 16:39:47 ]
>>570
ああreturnか。

573 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:41:17 ]
>>566
下手するとgotoなんかよりずっとスパゲッティーになるな
フラグ変数が2つ出てきたり、状態が3つとかあったりすると死ねる

574 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:44:14 ]
>>573
やっぱ2重程度ならともかくそれ以上多重にネストしているあたりから
おかしくなり始めていると考えた方が良いのかなぁ。


575 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:26:39 ]
フラグって一切使っちゃダメなん?
一切使うな的なことを初めのころ本で呼んで、
それ以来、可能な限り使わない方法を考えてる。
フラグを使わない方法を考えるだけで1日潰すなんてザラ。

でも、実際仕事を始めたら、普通にみんな使ってるし、
大体、DB自体がフラグのカラムでいっぱいだし、
そうなるとコード側でもフラグを操作しないとダメになる。

何が言いたいかっつーと、
フラグを使いまくってる職場のプログラム設計がおかしいのか、
フラグ排除主義の過激派が悪いのか、真理を教えてくれ

576 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:36:26 ]
別に、そう深刻に考える問題でもないと思うけど。
>>567は逆に考えれば、明快な名前を持つフラグ変数ならマシってことでもある。



577 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:07:24 ]
フラグや多重ループはベタなコードを一度書いてみてジックリ考察すれば
単純なクラス構造に落とせると思うっス 使い捨てクラスが増殖するけど
後の状態変数の把握のし易さは別次元。

578 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:53:11 ]
まぁ、アジャイル・プラクティスの教えに従えば、何事もバランスが大事。
そして、ダメだとわかったときにはリファクタリングする勇気。

でも、できればフラグやgotoは減らしていきたい。

579 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:58:37 ]
gotoなんか使ってる奴はダメだね
男ならsetjmp/longjmpだろ

と行きたいところだがある意味>>565で既出だった

580 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:02:40 ]
恩師、goto熊男先生いわく、

「ノォ!」

なので、gotoは使っちゃいけないと思うな。
(おっさん限定ネタ)

581 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:07:05 ]
BreakTwoLevelsException

582 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:10:20 ]
いや、最初の論点は
「goto使用を避けるためにフラグを使う」というのが最悪、ってことだろ。
もちろんフラグなんて可能な限り使わないほうが良いが、避けられないケースはある。

また、よく言われるループ内のswitchからの脱出の話題で
「switch使うな、classにしろ」という論も
猫も杓子もそうしろと言い出すのはナンセンスとしか言い様が無い。
「return使え」も同様。

要は、臨機応変に適材適所で手元にある道具を使え、ってことだ。

583 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:20:54 ]
内部ループ部分の関数括りだしや、contiue を活用すれば、二重以上のループは
殆ど登場しないから、個人的には goto は要らないな。
STL やファンクタも併用すれば、ループそのものの登場機会が減るし。

584 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:22:10 ]
このスレって荒れないね。
すばらしい。
理性的な人がそろっているな。



585 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:33:13 ]
C++は、使う人が理性的でないと、大変なことになるからかもね

586 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:35:43 ]
でも、スコットメイヤーもハーブサッターも
著書の中で毒舌はきまくりだよ。



587 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:45:51 ]
>>581
BreakがTwoLevelsかどうかはcatch節によるんで、その名前はあんまりです。

588 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:09:04 ]
C++で正常系なのに例外を使うなんて信じられないっす






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

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

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