■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part20
501 名前:デフォルトの名無しさん :03/06/22 00:07
> const A& foo( const A& a ) {
> return a; // ※良い子はこんなコードを書いちゃいけません
> }
a は参照だからコピーコンストラクタは呼ばれないし、
だからこの中でデストラクタも呼ばれない。

ここで問題になるのは、a が一時オブジェクトかもしれないということだ。

502 名前:デフォルトの名無しさん :03/06/22 00:09
確かに一時オブジェクトのときは:
const A& a = foo( A() );
この実行後、aの実体はデストラクトされてるかもしれんね。

対して
const A& a = A();
このときはaのスコープの範囲まで一時オブジェクトの生存が延長されるんだっけ。
そういう意味では落とし穴ではあるか。


503 名前:デフォルトの名無しさん :03/06/22 00:09
>>501
一時オブジェクトでもfooには何も問題ないと思うんですけど。

504 名前:デフォルトの名無しさん :03/06/22 00:18
>>502
その通り。

505 名前:500 :03/06/22 00:28
まだまだ修行がタリンでした。

506 名前:デフォルトの名無しさん :03/06/22 21:03
func(string s)
{
...
}
とあって

func(string("aaa"));
という風に呼んでいるコードがある。

stringオブジェクトって名前無しオブジェクトになるのでしょうか?
このスコープから抜けたらデストラクタが呼ばれるのでしょうか?
関数を呼び出したときにはコピーコンストラクタが呼ばれている?


507 名前:デフォルトの名無しさん :03/06/22 21:12
全然問題ない

508 名前:デフォルトの名無しさん :03/06/22 21:14
でも普通
void func(const string& s){}
void test()
{ func("test"); }
こうする。

509 名前:デフォルトの名無しさん :03/06/22 21:16
意味合いが違ったね

510 名前:506 :03/06/22 21:21
>>508
thanks!

うちの処理系だと "test" は const char * と認識されて
コンパイル通らないんです。



511 名前:506 :03/06/22 21:38
class Test {
public:
Test()
{ cout << "Test::Test()" << endl;
}
Test(const Test& test)
{ cout << "Test::Test(const Test& test)" << endl;
}
virtual ~Test()
{ cout << "Test::~Test()" << endl;
}
};
とありまして

func(Test test)
{ ...
}
とあります。

test()
{ func(Test());
}
と呼び出すと
オブジェクトが途中で消失してしまいます。
コピーコンストラクタが呼ばれない。

なぜ string だと上のようなことがOKなのでしょうか?


512 名前:デフォルトの名無しさん :03/06/22 21:56
const char* から std::string へは暗黙の変換が行われるはず。
511のコードはコンパイルできないはずだが、関数の引数の話に限れば、
それで問題ないはず。

まともな処理系じゃないんじゃないの?

513 名前:デフォルトの名無しさん :03/06/22 22:21
A->method(new B());

C++ でこういうのあり?
これデーモンプログラムなんだけど。
どこにも delete がないんだよね。


514 名前:デフォルトの名無しさん :03/06/22 22:25
>>513
それだけの情報で判断できるヤツなどいないと思われ。

515 名前:デフォルトの名無しさん :03/06/22 22:28
>>515
俺様がいる

516 名前:515 :03/06/22 22:29
誤爆った(TДT)

517 名前:デフォルトの名無しさん :03/06/22 22:29
>>513
処理系によりけりかな?


518 名前:デフォルトの名無しさん :03/06/22 22:30
>>517
どういうこと?

519 名前:デフォルトの名無しさん :03/06/22 22:32
>>513
昔BorlandのOWLだか(いやもっと前か?)では
new TWindow(parent, ...);
とかいうふうにnewの戻り値を受け取らない構築が普通なやつがあったような。

とにかく受け取り手が開放の責任を持つとかなってるんじゃないの。

520 名前:513 :03/06/22 22:33
このデーモン、メモリ使用量が目茶目茶多いんですが・・・
190MB越えている・・・


521 名前:デフォルトの名無しさん :03/06/22 22:35
>>520
で、ここで何を答えて欲しいんだ?

522 名前:デフォルトの名無しさん :03/06/22 22:37
class A {
  method(B* obj) {
    ...
    delete obj;
  }
}

A->method(new B());

523 名前:513 :03/06/22 22:37
>>520
引き継いだプログラムなんですが
明示的に delete するべきですよね。



524 名前:デフォルトの名無しさん :03/06/22 22:40
明示的にって・・・

525 名前:デフォルトの名無しさん :03/06/22 22:45
>>513
必ずしもそうとはいえないけど。

526 名前:デフォルトの名無しさん :03/06/22 22:45
ガベージコレクションも調べてみて

527 名前:デフォルトの名無しさん :03/06/22 22:48
placement newでdeleteの必要を無くす場合もあるんじゃない

528 名前:デフォルトの名無しさん :03/06/22 23:23
method 内部で何してるか分かんないのに
自分で delete する必要性があるのかなんて分からん。

method の引数の型が auto_ptr<B> だったり、
内部で delete してたり、
A 内にポインタを保持しておいて、
別のタイミングで勝手に delete してくれたりする場合は
何もしなくていいわけだし。

529 名前:デフォルトの名無しさん :03/06/22 23:37
>>528
auto_ptrのコンストラクタはexplicitだからあそこではマッチしないけどな(笑)

530 名前:デフォルトの名無しさん :03/06/23 00:05
あー、explicit やったんや。スマソ。

531 名前:441 :03/06/23 00:37
>>466
もう書いてある。もう一度書いてもあなたはそれを利点だとは思わないから理解してもらえない。
一つだけあるのは >>446 であなたが否定した事。これはここまでのやりとりで
あなたが誤解してただけで、微かな利点である事はわかってもらえるかなとも思う。

>>467
あれがメモリーアロケータですが何か?
っていうか、sbrk も HeapAlloc もない環境なんだよ。
自分でヒープ管理書かなきゃ駄目なの。
メモリー無尽蔵な PC での富豪的プログラミングの経験しかない香具師はすっこんでろ。

>471
おじいちゃん。ぼく最近まで C++ 知らなかったんだ。
てんぷれーとっていうのも最近つかいはじめたばっかりなんだお。


532 名前:デフォルトの名無しさん :03/06/23 00:43
そういう悪態をつくと正しくても味方しようとは思わなくなるもんだ。

533 名前:デフォルトの名無しさん :03/06/23 00:47
ヒープ管理なんて要らね
0x9FFFFまでは俺様の領域

534 名前:デフォルトの名無しさん :03/06/23 01:00
>>467の言ってる意味を全然理解してないな バカ?

535 名前:444 :03/06/23 01:28
>>531
> 一つだけあるのは >>446 であなたが否定した事。これはここまでのやりとりで
> あなたが誤解してただけで、微かな利点である事はわかってもらえるかなとも思う。

「わからない」と言って解説お願いしたのに、「わかってもらえるかなとも思う」とは、
勝手な妄想の激しい方ですね。

安易にテンプレートを使うことによるデメリットを受け入れた上で、
その微かな利点を優先させるほどの理由がわからない。
と、こういうわけで、解説お願いしたいのですが、いかがでしょうか?

536 名前:ひよこ名無しさん ◆ZCZKn7MbRM :03/06/23 01:40
構造体を表す struct ですけど、正式な名称って
・structure
・structural
どちら?

随分マニアックな質問ですが、よろしくお願いします。

537 名前:デフォルトの名無しさん :03/06/23 01:42
>>536
C言語より英語を勉強したほうがいいぞ

538 名前:デフォルトの名無しさん :03/06/23 01:43
>>536
中学校の英語のレベル。
品詞ってわかりますか?

539 名前:441 :03/06/23 01:53
>>532
煽りには煽りで応じるのが2ちゃんの礼儀だと思ってたんだけど。

>>533
0xA0000 からは何がはじまるのですか?

>>534=>>467
おまえの脳内の事なんて知るかばか

>>535
>「わからない」と言って解説お願いしたのに、「わかってもらえるかなとも思う」とは、
勝手な妄想の激しい方ですね。
ワケワカラン。「おまえのいってる事が全部わからない」に対して「これだけはわかってもらえるか?」は
受け答えとして何かおかしいですか?

> 解説お願いしたいのですが、いかがでしょうか?
だってあなた実利主義者でしょ?
「ここの具合がこう美しい」とか(目に見えない心理的な利益を)説明しても
共感してくれないって、今までのやりとりから感じられるんだもん。
あとヒープ管理なんて一度書いたら滅多に直さないからテンプレートにするデメリットはたいしてないという罠。




540 名前:デフォルトの名無しさん :03/06/23 01:54
「随分マニアックな」

541 名前:デフォルトの名無しさん :03/06/23 01:54
structuralism

542 名前:デフォルトの名無しさん :03/06/23 01:56
問題は片付いたんだろ?しつこいよ

543 名前:デフォルトの名無しさん :03/06/23 01:57
rhythm red beat black

544 名前:デフォルトの名無しさん :03/06/23 01:58
「安易にテンプレートを使うことによるデメリットを受け入れた上で」
の「安易に」って部分に
「俺はテンプレートの利点も欠点も分かってるんだ」って雰囲気が読み取れる。
単純に煽ってるだけだな。

545 名前:デフォルトの名無しさん :03/06/23 02:01
いや俺もテンプレートをわざわざ使う意味がわからない。
何のためにつかうんだろ?
>>466じゃダメなの?


546 名前:デフォルトの名無しさん :03/06/23 02:05
こんなところで何を聞いてもだめさ。
ヒープ管理?ああOSが勝手にやってるだろってなレベルしかいないから。
こいつらじゃ標準入出力程度のコードも書けないだろ。

547 名前:デフォルトの名無しさん :03/06/23 02:11
>>546
だから偉そうにいうなら教えてくれよ。FreeBSDのソース嫁とか言うなよ

548 名前:デフォルトの名無しさん :03/06/23 02:15
>>547
>>546はFreeBSDなんて知りません。

549 名前:444 :03/06/23 02:36
> ワケワカラン。「おまえのいってる事が全部わからない」に対して「これだけはわかってもらえるか?」は
> 受け答えとして何かおかしいですか?

535でそう受け答えしたつもりなら、文章にもっと気をつけてください。
少なくともあの文章では、どうやっても「わかってもらえるか?」などという解釈には至りません。
で、「わかってもらえるか?」に対する答えは「それはわかります」です。

> だってあなた実利主義者でしょ?
> 「ここの具合がこう美しい」とか(目に見えない心理的な利益を)説明しても
> 共感してくれないって、今までのやりとりから感じられるんだもん。

あなたの勝手な観察結果などどうでもいいですから、解説してもらえませんか?
実利面で共感してもらえないと自覚している実装を
(おそらく実際の仕事で)選択する理由もわかりません。

> あとヒープ管理なんて一度書いたら滅多に直さないから
> テンプレートにするデメリットはたいしてないという罠。

テンプレートを使った場合のデメリットが
ソースの修正時にしか発生しないということですか?
そんなことはないと思いますよ。

550 名前:441 :03/06/23 02:43
>>542
正直、スンマソンかった。

>>543
趣味同じだね。

>>544
俺やっぱ煽られてますか?

>>545
心理的な物。その方が生成物が美しそうな気がするだけ。

>>546
って言えるくらいラベルの高いあなたがいるじゃないですか。

ラベルの高い人ハッケソしたので質問ー。
日本で買える本でヒープ管理とかについての良本ってないかな?
Modern C++ design のは遅すぎだし(サイズについては最適化されてる?)、
Efficient C++ のは事実上のリーク(プール管理オブジェクトの解体まで一切解放しないじゃねーかばかぁ)だし、
みんなもっともらしい嘘ばっかりなんだよね。

Efficient C++ の参考書籍の Secrets of C++ Master ってのを買おうと思ったら
Amazon では品切れだし、他では売ってないし、Amazon 以外で洋書買ったことないし…。

非 PC な世界では日常的なテーマな気がするんだけど、なんでこんなに参考書がないんだろう?

551 名前:441 :03/06/23 02:54
>>549
> 535でそう受け答えしたつもりなら、文章にもっと気をつけてください。
すまんすまん。お互い文章にはもっと気を使わなきゃいかんね。

> (おそらく実際の仕事で)
ごめんこれ趣味。仕事の時はもっと気を使ってます(そもそもテンプレート使ったコード読めない人も多いので)。

> あなたの勝手な観察結果などどうでもいいですから、解説してもらえませんか?
> 実利面で共感してもらえないと自覚している実装を
うまく言葉にはし難いんだよね。あえて言うなら
オブジェクトコードみた時に、専用に見えるような(汎用性がないように見える)美しさ。かな。
まさしく実利とはまったく関係ない「おいらの(おいらの)世界(せかい)やっほ(やっほ)やほほほ(やほほほ)」てな感じなわけですが。

> テンプレートを使った場合のデメリットが
> ソースの修正時にしか発生しないということですか?
> そんなことはないと思いますよ。
似たようなコードの重複やそれが回避された時の最適化の抑制を心配してる?
最近のコンパイラだとできるだけ重複しないようにしてくれるし、
最適化も既知の型の部分には他と変わらないようにかかるはずだけど。

552 名前:デフォルトの名無しさん :03/06/23 03:41
> ごめんこれ趣味。
趣味で組み込み用?・・・某携帯ゲーム機でしょうか。

> テンプレートを使った場合のデメリット
exportをサポートしない処理系では、ほとんどの実装をヘッダに晒す羽目になる。
メモリ管理アルゴリズムとして再利用しようと思っても、コンパイル時に決定する引数しか渡せない。
など。

> オブジェクトコードみた時に、専用に見えるような(汎用性がないように見える)美しさ。かな。
なるほど。共感しかねます。

ヒープ管理の自作なら、本なんか買わなくても、
googleで十分な記事が拾えると思いますよ。
参考書が無いのもそのせいではないでしょうか?

553 名前:デフォルトの名無しさん :03/06/23 06:33
>>441
>Modern C++ design のは遅すぎだし(サイズについては最適化されてる?)、
おまえはばか?これはtemplateを使うための入門本だよ。
まさか、Lokiをそのまま使って喜んでないよな。


554 名前:デフォルトの名無しさん :03/06/23 14:22
そろそろ441には消えて欲しいんだが。
真面目な話は大いに結構だが、煽りながらやる必要もあるまい。

555 名前:デフォルトの名無しさん :03/06/23 17:43
あるモジュール(ハードウェアデバイスを管理するもの)を考えていて、
それをクラスにするか名前空間にするかで悩んでいます。
初期化・終了処理が必要なのでクラスにしたい気もするんですが、
インスタンスを複数生成されると困るので名前空間のほうが良いような気もします。
よろしければアドバイスをお願いします。

556 名前:デフォルトの名無しさん :03/06/23 17:48
シングルトーン!

557 名前:デフォルトの名無しさん :03/06/23 17:56
allocatorは未完成だからな

558 名前:デフォルトの名無しさん :03/06/23 18:01
コピーコンストラクタっていまいちわからんが、自分のクラスを実体化して
それを引数にさらに自クラスを呼ぶってこと?Cの再帰処理みたいな感じですか?

559 名前:デフォルトの名無しさん :03/06/23 18:01
>>556
サンクスです。良さそうです。検討してみます。

560 名前:デフォルトの名無しさん :03/06/23 18:24
>>558
その言葉遣いで言えば、実体化するときに同じクラスの
既にあるインスタンスを参考にすること。じゃないか?

561 名前:デフォルトの名無しさん :03/06/23 18:25
>>558
初期化時にしかコピーコンストラクタは呼ばれないんだから
自分自身が引数になることはあり得ませんです。

562 名前:デフォルトの名無しさん :03/06/23 18:37
new で割り当てたメモリに対して
realloc でメモリを再割り当てしても大丈夫なのでしょうか?
何か後々問題とか出るのでしょうか?

563 名前:デフォルトの名無しさん :03/06/23 18:41
>>562
んなことやるな

564 名前:デフォルトの名無しさん :03/06/23 19:37
>>562
reallocが必要なときはstd::vectorなどがあります。
C++ではどうしても必要なとき意外mallocすらつかわない。

565 名前:デフォルトの名無しさん :03/06/23 19:53
>>564
>C++ではどうしても必要なとき意外mallocすらつかわない。
後学のために教えてくれ。
どういった場合に必要なんだ?
俺はそういった場面に出くわしたことがないのだが。
リソースが限られている環境とかか?


566 名前:デフォルトの名無しさん :03/06/23 19:59
コーディング規約:STL使用禁止

567 名前:566 :03/06/23 20:00
あ、いやなんでもない。

568 名前:デフォルトの名無しさん :03/06/23 20:09
最初に確保した容量だけを使いまわす場合とかだろ
実行の中途でメモリ確保に失敗して(きちんと終了処理してまたは
何もしないで)終了するアプリケーションがあるが、
一番よいのは最初にのみ確保してみて失敗すれば実行しないことだろう。

MS Officeはメモリ確保に失敗すると遠慮なく落ちるがあれは最悪
セーブダイアログを出そうとしたタイミングとかだともうやるかたなし

569 名前:デフォルトの名無しさん :03/06/23 20:26
>558
クラスがコピーされるときに呼ばれる、コンストラクタのこと。
特別なコンストラクタがあるのじゃなくて。
引数が違うだけ。


570 名前:デフォルトの名無しさん :03/06/23 20:26
>>565
たとえばへたれMFCがCWinApp::m_pszProfileNameの開放にfree()を使ってたりするときとか。

571 名前:562 :03/06/23 20:27
>>563
>>564
realloc はやっぱりまずいですか。
std::vector を調べてがんばってみることにします。

572 名前:デフォルトの名無しさん :03/06/23 20:28
>>565
new をオーバーロードしたい時とか。

573 名前:デフォルトの名無しさん :03/06/23 20:35
boost exeでかくなるし、メモリーも食うよー
これ生姜ないの?

便利さの犠牲
どうしよう?

574 名前:デフォルトの名無しさん :03/06/23 21:44
しかたないね。C++は型ごとにコードを複製しているから。
その点Javaのgenericsはコードを複製しないから最高だよ。

575 名前:デフォルトの名無しさん :03/06/23 22:08
>>574
その代わり実行速度は(略

576 名前:デフォルトの名無しさん :03/06/23 22:17
>>573
それを補ってあまりある強力さがあるように思うが。

>>574
Javaはメモリ管理しなくていいぐらい
本体がメモリを食うからなぁ…

577 名前:デフォルトの名無しさん :03/06/23 22:20
>>574
>最高だよ。
こいつ死滅系スレにいるバカだな。トレードオフのことを全然分かっちゃいない。

578 名前:デフォルトの名無しさん :03/06/23 22:21
boost::regex++使ったらあっという間に実行ファイルサイズが2MB超えた…

579 名前:デフォルトの名無しさん :03/06/23 22:35
>>576
サイズが大きいってのを補えるわけないじゃん。バカ?

580 名前:デフォルトの名無しさん :03/06/23 23:55
STLつかうと一気に実行ファイルサイズが10倍に?!

581 名前:デフォルトの名無しさん :03/06/23 23:58
>580
1の十倍と10の十倍は違うからなぁ

582 名前:デフォルトの名無しさん :03/06/24 00:02
結構時間かかって納期がおした物件納品するときに
フロッピーに収まるサイズだったらなんか気まずいよね。


583 名前:デフォルトの名無しさん :03/06/24 00:03
サイズが大きいからといって使わないのは馬鹿
そういう奴はWindowsもUNIXも使うな。MS-DOSでも使ってろ

584 名前:デフォルトの名無しさん :03/06/24 00:11
サイズよりエラーメッセージが呪文のようになることのほうが問題
スクリプトで加工したりしてめんどい

585 名前:デフォルトの名無しさん :03/06/24 00:12
まぁ、UPXとかで圧縮という手もあるわけだが。

586 名前:デフォルトの名無しさん :03/06/24 01:44
サイズ気になるならC++をつかうな

587 名前:デフォルトの名無しさん :03/06/24 01:45
>>586
では何を使えと?

588 名前:デフォルトの名無しさん :03/06/24 01:48
>587
マシン語

589 名前:デフォルトの名無しさん :03/06/24 01:55
そういや昔マシンマンってあったな。
マシン空間光に乗って〜

590 名前:デフォルトの名無しさん :03/06/24 01:59
>>587
スクリプト言語だと、とりあえずファイル容量だけは減らせるYO!
それに意味があるかは別として。

591 名前:デフォルトの名無しさん :03/06/24 05:19
WHSに決まってんじゃん

592 名前:神戸市民 :03/06/24 05:39
質問させて頂きます。
当方、ボーランドC++コンパイラー(無料の物)を使用しております。

キーの入力時に、エンター(リターン)キーを押さずに、「a」を
押したらそのまま「a」と入力されるようにする事は可能でしょうか?

「DOS窓で動作するテキストベースのRPG」の「キャラクターの移動」で、
現在は「a」「エンター」「a」「エンター」「a」「エンター」・・・
とキーを打っています。



593 名前:デフォルトの名無しさん :03/06/24 06:47
Windowsのコマンドプロンプトはほとんど何も出来ない。
Win32APIのConsoleなら色々できるがWindowsProgrammingになる。
conio.hを用いればMS-DOSプロンプト用(激ノロ)になる。

#include<conio.h>
int getch(void);エコーなし一文字入力
int getche(void):エコーあり
int kbhit(void);キー入力有無のチェック
void gotoxy(int x,int y);カーソルの移動
int wherex(void);カーソル位置x
int wherey(void);y
void clrscr(void);画面消去
void textcolor(int newcolor);文字の色

594 名前:デフォルトの名無しさん :03/06/24 14:09
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_ECHO_INPUT)

595 名前:神戸市民 :03/06/25 00:18
>>593
ありがとう御座います。
ウインドウズAPI使ったら出来るのですね。

週末にでも、書籍買ってきます。




596 名前:デフォルトの名無しさん :03/06/25 00:27
>>595
止 め と け 。

自前でウィンドウを作って
背景を黒に塗りつぶして作るほうがはるかにマシ。

597 名前:デフォルトの名無しさん :03/06/25 00:30
GCC でコンパイルしたプログラムを GUI でデバッグできるデバッガってありますか?
GUI のデバッガ付きのコンパイラで、テンプレートがイケてるのでもいいのですが。
CodeWarrior ってテンプレートはどうなんでしょうか?
ご存知の方いらっしゃいましたらよろしくお願いします。

598 名前:596 :03/06/25 00:32
って質問よく読んでなかった。スマソ。

599 名前:デフォルトの名無しさん :03/06/25 00:37
>>597
gdb

600 名前:デフォルトの名無しさん :03/06/25 00:42
char型の可変長配列を vector<char> buf; とでも定義して、bufにいろいろ
操作をします。
次に、char型の配列の先頭アドレスを要求してくる関数にbufを渡したいん
ですが、これって普通に &buf[0] とやっちゃっていいもんでしょうか?
vector内のバッファのアドレスを取る関数とかがあれば、それを使うのが
適当だと思うんですが、見当たらないもので。

601 名前:デフォルトの名無しさん :03/06/25 00:44
何かの本に
「vectorは引数に配列を取るようなレガシー関数との互換性がある」
って書いてあったけど本当かどうか試したことないからわからん

602 名前:デフォルトの名無しさん :03/06/25 00:48
>>600
OK。
EffectiveSTLかなんかで
○ &buf[0]
× buf.begin()
って読んだ覚えがある。試したことないから漏れも知らんが。

603 名前:デフォルトの名無しさん :03/06/25 00:48
>>597
> GCC でコンパイルしたプログラムを GUI でデバッグできるデバッガってありますか?
insight, ddd
> GUI のデバッガ付きのコンパイラで、テンプレートがイケてるのでもいいのですが。
文句なしに VC++.NET 2003。
> CodeWarrior ってテンプレートはどうなんでしょうか?
Lokiの開発環境であったくらいにOk。

604 名前:r :03/06/25 00:52
>>600
std::vectorって、そこまで内部構造が外に透けて見えてるのかなぁ。
charの可変長配列が、ナル終端される...つまり文字列だったら
std::stringを使いさえすれば万事OKなんだろうけど、
そうしてないのは、きっとstd::vectorを使うことになんか意味があるんだろうなぁ。

&buf[0] よりも、 ((char*)buf)[0]のほうがよさそうな気もするなあ。

あー、適当なことばっかりゆってて、信用されたら嫌だなぁ。

605 名前:600 :03/06/25 00:53
>>601-602
なるほど、ありがとうございます。
動いてはいるけど不安が拭いきれなかったんですが、すっきりしました。

606 名前:597 :03/06/25 00:57
みなさんレスありがとうございます。

>>599
gdb って GUI 版もあるんですか?それよりも Windows でも使えるんでしょうか?

>>603
情報ありがとうございます。 insight と ddd というのは知らなかったので
調べてみますね。
Loki は CodeWarrior で書かれたのですかー。じゃあ十分購入候補になりそうです。
で、VC++.NET は大丈夫なのでしょうか?2003ってメジャーバージョン上がってるんでしたっけ?
cl.exe 13.x は無料のを触ってみたのですが、VC6 の頃からたいして変わってなかった印象なのですが…。

607 名前:デフォルトの名無しさん :03/06/25 00:57
>>604
> ((char*)buf)[0]
それは動かない可能性が大いにあるぞっていうか意味全然ちげーし。

608 名前:デフォルトの名無しさん :03/06/25 00:58
> &buf[0] よりも、 ((char*)buf)[0]のほうがよさそうな気もするなあ。
どこか感覚が狂っていると思われ。

609 名前:デフォルトの名無しさん :03/06/25 00:58
>>602
buf.begin() が返すのは iterator

>>604
> &buf[0] よりも、 ((char*)buf)[0]のほうがよさそうな気もするなあ。

意味不明

610 名前:r/604 :03/06/25 01:00
607-609
指摘サンクス。
つーか、すまん。

611 名前:デフォルトの名無しさん :03/06/25 11:02
enumの要素数を取得したり、pascalでいう、lowやhiを取れますか?

612 名前:デフォルトの名無しさん :03/06/25 11:05
取れません。

613 名前:デフォルトの名無しさん :03/06/25 11:24
有難うございます>>612

じゃ、みなさんどうやって固定値保存されてるんでしょう。
無理やりSTLのvectorとかに入れて、sizeやlow、highを取れるようにしたり、なんかします?

614 名前:デフォルトの名無しさん :03/06/25 11:29
>>613
どういうことがしたいのか例示キボン
まあ普通そもそもlow, highなんて使わずに定数名を直接書いたりしてる気が < C/C++

615 名前:デフォルトの名無しさん :03/06/25 11:37
>>614

例えば、全テーブルに操作に処理を行うとかです

for (int iCount = low(EnumTable); iCount < high(EnumTable); iCount++)
  Proc(TableNameArray[iCount]);

616 名前:デフォルトの名無しさん :03/06/25 11:40
>>615
テーブルなら添え字は列挙ではなく整数で、普通vectorとかなので
「無理やり」という感覚ではなく、普通に
for(Table::iterator p = table.begin() ; p != table.end(); p++ ) {
 Proc(*p);
}
なかんじ

617 名前:デフォルトの名無しさん :03/06/25 11:42
なるほど。>>616
で、念のため確認ですが、固定値をenumじゃなくて、stl保存しててもふつー、ですか?

618 名前:デフォルトの名無しさん :03/06/25 11:45
>>617
「stl保存」の意味がわからんが・・

619 名前:デフォルトの名無しさん :03/06/25 11:49
>>618
保存じゃなかった、記述。
固定値をソースコードに記述する場合に、
enumじゃなくて、vectorクラスを一個用意してても、変と思われないですか?
という意味です。

620 名前:デフォルトの名無しさん :03/06/25 11:53
>>619
それが指す先がテーブルの添え字で、上下端を表すだけの意味なら
vectorとかを使うだけだな。

その定数がテーブルの添え字じゃないのてならenumかcont intなどだけど。
(添え字でもenumも使うこともあるが、あくまでも特定のインデックスに特別な意味があるとき)

621 名前:デフォルトの名無しさん :03/06/25 12:58
NoneからEndまでのループのんが自然ですかね?

enum TestNumber {
TestNumber_None = 0,
TestNumber_Data1,
TestNumber_Data2,
TestNumber_End,
};

for (iCount = TestNumber_None; iCount < TestNumber_End; iCount++)
Proc(TableNames[iCount]);


622 名前:デフォルトの名無しさん :03/06/25 13:06
そのTableNameArrayとやらが定数の配列で、配列の上下端をループの
境界に使いたいなら、上下端も定数にしとけばいいじゃん。

それが一番普通と思われ。

623 名前:デフォルトの名無しさん :03/06/25 13:14
>>622
じゃ、上下指定値もenumメンバにしときます。

で、TableNamesみたいなのは、
char const *TableNames[5] = {
"Table1",
"Table2",
"Table3",
};
で、良いですよね?

624 名前:デフォルトの名無しさん :03/06/25 13:23
>>623
なんで[5]で中身が3つなんだ?

定数配列なら不一致を防ぐためにむしろ
((sizeof TableNames)/(sizeof TableNames[0]))を個数として使うかなー
ループは0から(個数-1)まで。

625 名前:デフォルトの名無しさん :03/06/25 13:25
じゃ、中身とenumを一致させる形にして...>>624

enum TableNumber {
TableNumber_None = 0,
TableNumber_Data1,
TableNumber_Data2,
TableNumber_End,
};

char const *TableNames[TestNumber_End] = {
"Table1",
"Table2",
"Table3",
};

for (iCount = TableNumber_None; iCount < TableNumber_End; iCount++)
 Proc(TableNames[iCount]);

で、どうでつか?

626 名前:デフォルトの名無しさん :03/06/25 14:07
const char* TableNames[] = {
  "Table1",
  "Table2",
  "Table3",
  0,
};
for (const char** p = TableNames; *p != 0; ++p)
  cout << *p << endl;

はダメか?

627 名前:625 :03/06/25 14:16
>>626
そうも書けますよね。どっちが良いのかな。

実行時にTableNames[]の個数を取るにも、sizeof(*TableNames)で良さそうですしね。

628 名前:デフォルトの名無しさん :03/06/25 16:47
C++の場合
char *p[5]={&a,&b,&c,0,0};

のようにNULLではなくて、0を入れておくべきなんだっけ?

629 名前:デフォルトの名無しさん :03/06/25 18:01
>>628
別にどっちでもいい。0かNULLかは単に表記上の問題。C FAQ読んでみ。

630 名前:デフォルトの名無しさん :03/06/25 18:06
ぬるぽ

631 名前:デフォルトの名無しさん :03/06/25 18:24
ガッ

632 名前:デフォルトの名無しさん :03/06/25 18:28
>>628
c++ではNULLマクロより0を使う
>>629
それはCでのはなし

633 名前:デフォルトの名無しさん :03/06/25 18:46
どうせ#define NULL 0になっているでしょ。

634 名前:デフォルトの名無しさん :03/06/25 18:54
C では NULL は 0 か ((void*)0) のどちらで定義されていても良い。
C++ では NULL は 0 と定義される。

>>632
可読性下がるから今すぐ NULL 使え。

635 名前:デフォルトの名無しさん :03/06/25 19:22
素数を求めるプログラムを
エラトステネスのふるいを用いて配列を使った時と、
配列を使わないで作成した時との
コンピューターが必要とする変数の数、計算のかかる手間等の
違いはどのようなものですか?

636 名前:デフォルトの名無しさん :03/06/25 19:26
#define ぬるぽ 0

637 名前:デフォルトの名無しさん :03/06/25 19:28
>>636
       _
┌――─┴┴─――┐
│ セルフサービス .│
└―――┬┬─――┘
        ││   ./   
      ゛゛'゛'゛ /    
         /
     | \/
     \ \
      \ノ


638 名前:デフォルトの名無しさん :03/06/25 19:38
>>634
まともな処理系だけ使っていればいいなら、null pointer
はNULLと書きたいけど、そうでない処理系を相手に
する場合は、やっぱり0と書くしか無い。
#if defined(__cplusplus) && defined(BROKEN_NULL)
# undef NULL
# define NULL 0
#endif
なんて荒技もあるにはあるが・・・。

639 名前:デフォルトの名無しさん :03/06/25 19:40
>>635
自分で作って見れ。そして比較して考えろ。
それが一番成長する。

プログラムは作って実感していくことが大事だ。

640 名前:デフォルトの名無しさん :03/06/25 19:58
もまいらこんばんわです!
おながいします。
標準ライブラリではないかもしれないのですが
関数のatoi()には_atoi()ってのもVCにはあるのですが
これってどう使い分けるのですか?
またどう違うのですか?
そもそもよく見かける_や__ってなんなんでしょう?

641 名前:デフォルトの名無しさん :03/06/25 20:00
VC++は勝手に先頭に_をつける。

642 名前:デフォルトの名無しさん :03/06/25 21:27
>>638
まともでない処理系にはどんなものがあるの?

643 名前:デフォルトの名無しさん :03/06/25 21:29
>>640
VC の命名規則では
_ : 処理系依存識別子(関数、変数など)
__ : 機能拡張(キーワード)
だったと思う。
うろ覚えだけど。

644 名前:デフォルトの名無しさん :03/06/25 21:45
>>642
古いコンパイラとかじゃない

645 名前:640 :03/06/25 21:55
>>641-643
標準c++でないコンパイラ実装なのかなと思って
いたのですがスッキリしますた。
どうもありがとうございますた。m(__)m

646 名前:597 :03/06/26 01:17
いろいろ有益情報教えてもらったので "We can bring back tech and peace♪"

>>634 >>638
-- null.h --
class NullPointer{
 public:
  template <typename T> operator T* () const { return 0; }
 …その他こまごました便利機能は自分で考えれ…
};
extern const NullPointer null;
-- null.cpp --
#include "null.h"
const NullPointer null;

こんな感じでドゥ〜?
詳しくは effective あたりに。

647 名前:デフォルトの名無しさん :03/06/26 02:24
NULL の定義のおかしいようなコンパイラで
テンプレートを、あまつさえメンバ関数テンプレートを使えるとは思えんけどね。

648 名前:デフォルトの名無しさん :03/06/26 06:57
>>640
ちなみにC言語の決まりで、頭に_を付けるのはライブラリやコンパイラの
製作者のために予約されていて、普通のプログラマは付けてはいけないこと
になってるゾ。

649 名前:デフォルトの名無しさん :03/06/26 09:27
>>648
でも、3 つ以上ならいいんだっけ?
___a とか。

650 名前:デフォルトの名無しさん :03/06/26 09:58
>>649 んなわけない。

651 名前:デフォルトの名無しさん :03/06/26 11:06
>>649-650
2つ以上からOKだよ。
__aとか。

652 名前:デフォルトの名無しさん :03/06/26 11:25
>600
やばいんじゃないかと思います。
char配列がconstでよいなら、stringのc_strを使えばok

653 名前:640 :03/06/26 11:30
>>648
サンクスコ!
ちなみにアンダバー2つ__についてはMSDNに書かれていますた。
ちゃんと読んでなくてすんまそんですた。

Microsoft 固有の仕様 →
Visual C++ では、先頭に 2 つのアンダースコアを続けた識別子を
コンパイラ処理系用として予約しています。
したがって、Microsoft 固有のキーワードの先頭にはアンダースコア
を 2 つ続けることになっています。


654 名前:640 :03/06/26 11:31
>>651もあんがとさん!
忘れた(--;;

655 名前:デフォルトの名無しさん :03/06/26 11:31
>>651 ハァ?

656 名前:デフォルトの名無しさん :03/06/26 12:08
C++ 仕様書 17.4.3.1.2.1

2つの連続するアンダースコア __ を含む名前か、
アンダースコアで始まりそれに大文字が続く名前は
どんな場合においても処理系のために予約されています。

グローバル名前空間内においては
アンダースコアで始まる名前全体も
処理系のために予約されています。

657 名前:デフォルトの名無しさん :03/06/26 12:19
>>652
うそはよくないです。

658 名前:600 :03/06/26 12:30
>>652
スマソ。説明の為に変えたんだけど、実はcharじゃなくてintのvectorです。
良ければ、やばいと思う理由を教えてください。

漏れが心配したのはvectorが伸張するときなんかに、分断された領域を
確保して、[]演算子で辻褄を合わせる、なんてことが許されてたら、&buf[0]
で取るアドレスから配列が連続して続いていると仮定するのはまずいよなあ、
という点です。

で、質問させてもらったわけですが、おかげさまでその心配は解消したわけです。

659 名前:デフォルトの名無しさん :03/06/26 14:01
>>656
これって、
「2つの連続するアンダースコアを含む名前」
「アンダースコアで始まる名前全体」
ってのがアンダースコア3つ以上繋がったのを
含むのか含まないのかが曖昧な文だよねぇ。

660 名前:デフォルトの名無しさん :03/06/26 14:06
>>600
ぜんぜんやばくない。
>>652
求めてるのが文字列以外なら
c_str()つかえばサイズ、あわねーじゃん

661 名前:デフォルトの名無しさん :03/06/26 15:39
>>635
ここでも読んでみて
http://pc.2ch.net/tech/kako/993/993457354.html


662 名前:デフォルトの名無しさん :03/06/26 15:50
>>600
ISO 9899-1999ではまだそうなってはいない
やめたほうがいい

663 名前:662 :03/06/26 15:52
ISO 14882-1998の間違い。

664 名前:600 :03/06/26 16:29
>>662
「そうなってはいない」の「そう」の意味を教えてもらえませんか?

665 名前:600 :03/06/26 16:31
ではどうするべきか、も是非。

666 名前:デフォルトの名無しさん :03/06/26 17:00
>>600
vectorを配列として扱える保証が今のところの最終仕様にはない。
vectorは使う限りコピーする位しかどうにもならないような
とは言っても私の知る限りvector<T>::iteratorはT*だけど
basic_stringにはconst charT *data()があるがconstだし

667 名前:デフォルトの名無しさん :03/06/26 17:09
>>602もいっているけどvectorだけは要素数を変更しない限り
問題がないとスコット・メイヤーズの本に書いてある。
>>662
どこにのってる。みつけれなっかった。
>>666悪魔の数字
operator [] はiteratorを返すわけじゃありません。


668 名前:デフォルトの名無しさん :03/06/26 17:10
>658
あなたが心配していることが、あり得るのでやばいです。


669 名前:662 :03/06/26 17:11
>>667
「のっていない」と言っている

670 名前:デフォルトの名無しさん :03/06/26 17:14
>>667
>operator [] はiteratorを返すわけじゃありません。
そういうことじゃない。内部表現の話だ

671 名前:デフォルトの名無しさん :03/06/26 17:22
>665
呼び出す関数を、変えるのがいいかな。
テンプレート化して、イテレータで、最初と最後を渡すようにすれば、
どんなコンテナでも配列でも、使えるようになる。


672 名前:600 :03/06/26 17:28
なるほど。
すると、>>602 のEffectiveSTLに書いてあることや、>>601 の「何かの本」
の記述が間違っているかどうか、ということですか。

最終仕様にvectorの内部表現が言及されていない限り、vectorを配列と
して扱いたい場合は、他に用意した配列にvectorの内容をコピーするの
が最も安全、ということですね。

>>671
呼び出す関数はレガシーなライブラリだったりすると変えられないのです。

673 名前:デフォルトの名無しさん :03/06/26 17:36
>>602 のEffectiveSTLに書いてあることや、>>601 の「何かの本」
>の記述が間違っているかどうか

実際にそうでない処理系が挙げられないという点で間違ってはいないし
そういう著者が主張しているということは将来盛り込まれる可能性も高い。

674 名前:デフォルトの名無しさん :03/06/26 17:43
たしかに読み返したら
「通常は問題ない。」と書いてあるね。

675 名前:tantei :03/06/26 17:45
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●別れさせ工作
あらゆる手段を使ってターゲットを別れさせます!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  hentaimtt@k9.dion.ne.jp
   ■グローバル探偵事務所 



676 名前:667 :03/06/26 17:46
>>662
ああ。なるほど。すみません。

677 名前:デフォルトの名無しさん :03/06/26 18:57
仕様の本文じゃなくて補足に書いてあるんじゃなかったか?

678 名前:デフォルトの名無しさん :03/06/26 19:01
ないなあ

679 名前:デフォルトの名無しさん :03/06/26 19:06
クラスの静的メンバ関数ってどういうときに使うんですか?
静的にするメリットがないような気がするのですが

680 名前:デフォルトの名無しさん :03/06/26 19:50
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■
                               
HSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html

HSPプログラムコンテスト2003に一番乗りで出展したものの              
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)    
順位 http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi                                     

681 名前:デフォルトの名無しさん :03/06/26 20:44
>>679
俺はシングルトンクラスのインスタンスの構築、破棄に使ったりするね。
Cxxx::CreateInstance()みたいな。
何かCで出来ないことが出来るって意味合いのもんじゃないよね、
こういうのって。

682 名前:デフォルトの名無しさん :03/06/26 20:58
>>673
C++98の時にはそうなっていなかったけど、TCが出て、
現行仕様ではOKとなっている。実際には、どこのコンパイラでも
配列として扱えるでしょ。
http://std.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#69

683 名前:デフォルトの名無しさん :03/06/26 21:00
>>681
シ、シングルトン・・・?

684 名前:132 :03/06/26 21:06
>>683
気になる!
なんだろう?なんかおかしい?

685 名前:デフォルトの名無しさん :03/06/26 21:07
>>684
お前だけじゃないから、安心しろ。>>683 がアフォなだけ
だから相手にするな。

686 名前:デフォルトの名無しさん :03/06/26 21:33
何の話をしているんだ?
俺にも教えろ!

687 名前:デフォルトの名無しさん :03/06/26 21:35
C-FAQは最低でも10回は読もうという話しだよ。

688 名前:デフォルトの名無しさん :03/06/26 21:36
>>687
ここはC++スレなんですが

689 名前:デフォルトの名無しさん :03/06/26 21:37
C++でも十二分に役に立つ。

690 名前:デフォルトの名無しさん :03/06/27 00:30
コマンドの実行ってsystem()使うしかないんでしょうか?
#include <stdlib.h>して。

691 名前:デフォルトの名無しさん :03/06/27 00:31
>>690
環境依存でなら他にいくらでも。
でも、このスレよりも目的の環境のスレで聞くがよろし。

692 名前:デフォルトの名無しさん :03/06/27 00:33
>>687
×話し
○話

693 名前:デフォルトの名無しさん :03/06/27 00:35
C++-FAQも読んでください。

694 名前:690 :03/06/27 00:39
>>691
了解。gcc逝ってきます。

695 名前:デフォルトの名無しさん :03/06/27 00:42
>>692
頭の上に蝿がとまってるよ。

696 名前:デフォルトの名無しさん :03/06/27 00:51
>>695
話 = 名詞
話し = 動詞(連用形)

697 名前:デフォルトの名無しさん :03/06/27 01:32
Kusakabe Youichiの予感

698 名前:デフォルトの名無しさん :03/06/27 01:36
実際の用例で行くと
「話」で送らない形は連用形「はなし」と終止形「はなす」に多く見られる。
(名詞は連用形が名詞化するのであって特別な場合ではない。)
(〜に候(さうらふ)。〜に候(さうらひ)て、などまだしばしば見るだろう。)
あくまでも訓は借字であり、あまり国語審議会の言うことに
こだわらない方がよい。

699 名前:デフォルトの名無しさん :03/06/27 01:46
国語相談室ですか?



700 名前:デフォルトの名無しさん :03/06/27 05:56
「話しをする」だと「はなししをする」だけどな。

701 名前:デフォルトの名無しさん :03/06/27 06:15
そうもいえない。
用例から言っても必ずしも送りがなくなるわけではない
だから「はなし」は名詞でも連用形でも「話し」と送る場合がある
「おはなし」「お話し」「お話」、「つり」「釣り」「釣」
「あゆみ」「歩み」「歩」、「みずあび」「水浴び」「水浴」
とどのつまり、他の言葉の問題と同じく各人の慣れに帰着する。

702 名前:デフォルトの名無しさん :03/06/27 09:56
C++のint型はCPUのビット数になる

703 名前:デフォルトの名無しさん :03/06/27 10:22
>>702
ダウト。

704 名前:デフォルトの名無しさん :03/06/27 10:26
>>703
http://pc2.2ch.net/test/read.cgi/tech/1056109884/748

705 名前:703 :03/06/27 12:31
>>704
なぜ俺に?
ひょっとして「自然なサイズ」=「CPU のビット数」だと思ってる?

64ビット機での int サイズ問題とか知らないんかね。
最近どっちかのスレで盛り上がったと思うけど。

706 名前:600 :03/06/27 15:00
>>682
ANSI/ISO 14882-1998中の欠陥として既に広く知られているんですか。
これが最終仕様かと思ってましたが、まだ先があったんですね。

というわけで、二転三転しましたが、vectorの要素は連続した領域に確保
されていると仮定して、配列と同じように使ってよい、と言うことですね。

どうもありがとうございました。

707 名前:デフォルトの名無しさん :03/06/27 15:35
typeid関数のメンバ関数beforeは、なにの順位判定をしてくれるのでしょうか?

708 名前:702,704 :03/06/27 18:23
>>705
元ネタはこいつという意味で提示しただけなんだけど・・・
一緒に笑ってくれると思ったのに。

709 名前:デフォルトの名無しさん :03/06/27 18:28
>>703
ダウトってどっから流行ったん?
単語の意味を考えると、どうも用法がズレてる気がしないでもない。

710 名前:デフォルトの名無しさん :03/06/27 18:30
>>709
同名のトランプゲームの用法ではないかな

711 名前:デフォルトの名無しさん :03/06/27 18:35
>>709
おかしなところを「ダウト!」と言ってから指摘するクイズ番組があった。

712 名前:703 :03/06/27 18:49
>>708
向こうで散々ループして鬱陶しかったネタを
こっちにまで持ってくんな!
このぬるぽ!

713 名前:デフォルトの名無しさん :03/06/27 18:55
>>712
ム板でぬるぽとか言うな。鬱陶しい。

714 名前:デフォルトの名無しさん :03/06/27 19:12
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ
ぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽぬるぽ


715 名前:デフォルトの名無しさん :03/06/27 19:12
>>712
鬱陶しい。

716 名前:デフォルトの名無しさん :03/06/27 20:10
>>707
型の順序の判定。
順番の決め方の基準は環境依存だが、とにかく
何かしら順序をつけてくれることが保証されている。

717 名前:707 :03/06/27 21:47
>>716
型の順序ですか・・・
一般プログラマは使うことはまずないですよね?

718 名前:デフォルトの名無しさん :03/06/27 21:59
ぬるぽ:Null Pointer Exception [無効ポインター例外]
>>713
なぜ?

719 名前:716 :03/06/27 22:25
>>717
もし typeid を積極的に使おうと考えてるなら、そのうち
一度や二度は必要になるんじゃないかと。そうでないなら
確かに使わないと思う。

720 名前:デフォルトの名無しさん :03/06/27 22:42
型をキーとした二分探索木とか作る時に
必要になるのかな? >before

721 名前:デフォルトの名無しさん :03/06/27 22:42
すいません ちょっと文法の質問させてください ほんとごめん

class Test {
Test *cursor;
public:
explicit Test( Test *p = 0 ) : cursor( p ) {}

ってのがあるんですが、コンストラクタ部分のcursor(p)ってのは
仮引数をそのままcursorに代入するんですか?

722 名前:デフォルトの名無しさん :03/06/27 22:45
>>721
代入じゃなくて初期化。
まぁ、この場合は大した違いは無いけど。

723 名前:721 :03/06/27 22:46
>>722 thx! 助かりました

724 名前:デフォルトの名無しさん :03/06/27 23:32
>>721
ちなみに、
仮に const なメンバ変数だったりするとコンストラクタの中で
cursor = p;
とかすらできなくなるので、そういうときに必須の機能なりよ。

725 名前:デフォルトの名無しさん :03/06/27 23:36
>>656
> C++ 仕様書 17.4.3.1.2.1
> 2つの連続するアンダースコア __ を含む名前か、
> アンダースコアで始まりそれに大文字が続く名前は
> どんな場合においても処理系のために予約されています。

小文字ならOKだったの?

> グローバル名前空間内においては
> アンダースコアで始まる名前全体も
> 処理系のために予約されています。

グローバル名前空間ってどういうこと?
クラスのメンバ変数とかならOKってこと?

プログラミング言語C++第3版のどっかに書いてある?

726 名前:デフォルトの名無しさん :03/06/27 23:40
>>725
::kore

727 名前:デフォルトの名無しさん :03/06/27 23:42
>>725
メンバーなら処理系定義の識別子とかぶらないし。

728 名前:デフォルトの名無しさん :03/06/27 23:47
>>727

そんなことないべ?

729 名前:デフォルトの名無しさん :03/06/27 23:49
キーワードとはかぶる可能性が。
__declspec とか。

730 名前:727 :03/06/27 23:51
>>729
ああそうか。うっかりしていた。

731 名前:730 :03/06/27 23:52
型名ともかぶる可能性があるじゃねーか(鬱

732 名前:デフォルトの名無しさん :03/06/27 23:57
class asdf{
int _zxcv;
};
これはOKということ?

733 名前:デフォルトの名無しさん :03/06/28 00:00
>>732
ok

734 名前:デフォルトの名無しさん :03/06/28 00:26
アンダースコアで始終する名前付けをするなよ

735 名前:デフォルトの名無しさん :03/06/28 00:31
>>734
終わりはよいという罠。
ジャンガリアン嫌い派の一部が m_xxx を嫌がって xxx_ とかつける。

俺はジャンガリアン派じゃないがポインタの pXxxx とメンバの m_xxx はするね。

736 名前:デフォルトの名無しさん :03/06/28 00:34
>>735
ジャンガリアン? ハンガリアンじゃなくて?

737 名前:725 :03/06/28 00:38
よし、アンスコ始まりは、とにかくダメってことだな。

738 名前:デフォルトの名無しさん :03/06/28 00:39
>>737
格好悪いから駄目。

739 名前:デフォルトの名無しさん :03/06/28 00:44
>>735
ハムスター?

740 名前:デフォルトの名無しさん :03/06/28 01:28
terapad がさ、*.cpp の中で thread を太字にしたんだけどさ、
いつから thread ってキーワードよ?作者の気の迷い?

741 名前:デフォルトの名無しさん :03/06/28 01:32
>>740
__declspec(thread) のことか?

742 名前:デフォルトの名無しさん :03/06/28 01:45
>>735
アンスコ2つだと後ろでもだめね。

743 名前:デフォルトの名無しさん :03/06/28 09:07
>>740
事実上のキーワードは太字にしてもかまわないというか害はないと思うが…

744 名前:デフォルトの名無しさん :03/06/28 10:06
public:
const static int a;
public:
static const int a;

どう違う?

745 名前:デフォルトの名無しさん :03/06/28 14:13
>>744
書いてる順番が違う以外に
違うところは全く存在しない。
int const statc a; でも構わない。
ただ、普通は static const int a; の順で書く。

746 名前:デフォルトの名無しさん :03/06/28 14:13
statc → static

747 名前:デフォルトの名無しさん :03/06/28 14:15
staticなconst int型のa

748 名前:デフォルトの名無しさん :03/06/28 14:58
>>745
ふつうは
static int constだろ

749 名前:デフォルトの名無しさん :03/06/28 15:00
s/普通/自分/g

750 名前:デフォルトの名無しさん :03/06/28 15:01
static int constは少数派。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.