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


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

C++相談室 part35
501 名前:デフォルトの名無しさん :04/09/12 21:39:35
VC++なんですが、販売終了しています。
どうやって学習したらいいのでしょうか?

502 名前:デフォルトの名無しさん :04/09/12 21:43:15
>>501
VC++.Net 2003買え。VC++バージョン7相当だ。

503 名前:デフォルトの名無しさん :04/09/12 21:49:01
>>501
Visual C++ Toolkit 2003使え。タダでVC++.NET2003Pro以上だ

504 名前:デフォルトの名無しさん :04/09/12 22:56:14
newやmallocで確保した領域ってabortで強制終了された場合でもプログラム終了と同時に解放されるんでしょうか?

505 名前:デフォルトの名無しさん :04/09/12 23:29:31
>>504
OSによる。

506 名前:デフォルトの名無しさん :04/09/12 23:43:15
メモリ保護機能のないOSなんてッ!!

507 名前:デフォルトの名無しさん :04/09/12 23:56:14
>>505
Win32 とか UNIX 使ってれば間違いないやね。

ただしデストラクタは呼ばれないから、共有メモリとか一時ファイルの類は
消えない可能性アリ。注意。

508 名前:デフォルトの名無しさん :04/09/13 01:00:55
>>506-507
スレ違い

509 名前:デフォルトの名無しさん :04/09/13 01:08:20
びっくりするほどリソースリーク
びっくりするほどリソースリーク

510 名前:デフォルトの名無しさん :04/09/13 01:10:18
あっとおどろくギャロップダイナ

511 名前:虎夫 :04/09/13 01:18:47
現在作っているプログラムで、
割り込みによって一定時間ごとにデータを取得しております。

このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。

しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。

現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)


512 名前:虎夫 :04/09/13 01:19:19
現在作っているプログラムで、
割り込みによって一定時間ごとにデータを取得しております。

このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。

しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。

現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)


513 名前:虎夫 :04/09/13 01:20:13
すいません、2重になっちゃいました。

514 名前:デフォルトの名無しさん :04/09/13 01:21:13
その質問はC++と関係ない

515 名前:虎夫 :04/09/13 01:25:34
ヴィジュアルCつかってます。
書き忘れてました。

516 名前:デフォルトの名無しさん :04/09/13 01:27:53
>>515
>>514

517 名前:デフォルトの名無しさん :04/09/13 09:37:49
boost/preprocessor/stringize.hppを見てて疑問に思ったのですが

#

と先頭に#だけの行があります。
コメントみたいになにも効果はないみたいですが
コンパイラにはどう解釈されているのでしょうか?

518 名前:デフォルトの名無しさん :04/09/13 09:58:13
>>515
割り込み?ドライバ作ってるんなら
http://pc5.2ch.net/test/read.cgi/tech/1063453024/l50
あたりで、アプリケーションでやろうとしているのなら
http://pc5.2ch.net/test/read.cgi/tech/1037636153/l50
あたりでどうぞ。


519 名前:デフォルトの名無しさん :04/09/13 12:55:52
>>517
#の次にnew-line文字が来ていればその行は読み飛ばされる。

520 名前:517 :04/09/14 14:12:09
>>519
遅くなりましたがありがとう。

521 名前:521 :04/09/14 20:57:17
今やっているプロジェクト用にXML ファイルから C++ ファイルを
自動生成するツールを作りたいと思っています。

A.xml を読み込んで、A_Handler.cpp, A_Handler.h, A_Instance.cpp
A_Instance.h, A_Test.cpp を生成するようなツールです。
ちなみに複雑な定義の場合はA_Handler_add.cpp といったファイルに
記述することにして、XML の中ではそのelementに対応する定義を
自動生成しないよう設定するなどして、あまり難しい処理はせずに
一発で自動生成できるようにします。

以前に別プロジェクトで A.xml を読み込んで A.cpp, A.h を
生成するツールを作ったので、それをリファクタリングして
抽象クラス等を抜き出して再利用したいと思っています。

しかし、なかなか難しいもので、どう設計すればいいか
悩んでいるところです。
(以下4レスほど続きます。)

522 名前:521 :04/09/14 20:58:22
現状のプログラム (OldGenCodeとします) は以下のような構成になっています。

<GRAMMAR> -> OldDataGrammar, <ELEMENT> -> OldDataElement,
<TYPE> -> OldDataType といった具合に、一種類のタグにつき
一つのクラスを定義し、OldMain.cpp から以下のように呼び出しています。

OldDataGrammar grammar;
grammar.load(xmlparser);
grammar.printHeader(ostream_h);
grammar.printCpp(ostream_cpp);

DataGrammar の中では以下のようなメンバ関数を作っています。

void printHeader(ostream & os) const
{
 printCopyrightNotice(os);
 printIncludeGuardBegin(os);
 printHeaderIncludeFiles(os);
 printUsingNamespaces(os);
 printNamespaceBegin(os);
 printClassDeclaration(os);
 printClassInlineDefinition(os);
 printNamespaceEnd(os);
 printIncludeGuardEnd(os);
}

523 名前:デフォルトの名無しさん :04/09/14 20:58:48

       ヽ(・ω・)/   今だ!ヨガテレポート!!
      \(.\ ノ
      ,,、

524 名前:521 :04/09/14 21:00:18
内部ではさらに
void OldDataGrammar::printClassDeclaration(ostream & os) const
{
 ... (略) ...
 for (int i = 0, n = elements_.size(); i < n; i++) {
  elements_[i].printGetterMethodDeclaration(os);
 }
 ... (略) ...
}
のように下位クラスを呼び出しています。呼び出された側ではこんな感じ。
void OldDataElement::printGetterMethodDeclaration(ostream & os) const
{
 if (! needPrintGetterMethodDeclaration()) {
  return;
 } // endif
 ... (略) ...
 output << " const " << getTypeName() << " & get" << getMethodName() << "(void) const;" << endl;
}

現状では Header と Cpp の二種類しか考えておらず、
Data* クラスの各階層に print* が山ほど散らばっています。
これを単純に五種類に増やせば破綻するのは目に見えています。
Data 部分と Print 部分を分ければいいのではと思うのですが、
どういう風に分ければいいのかあまりいいアイディアが浮かびません。

525 名前:521 :04/09/14 21:02:37
とりあえず Main から以下のように呼び出せる構造を考えてみました。
NewDataGrammar grammar;
grammar.load(xmlparser);
NewHandlerHeader handler_h(grammar);
handler_h.print(ostream_handler_h);
NewHandlerCpp handler_cpp(grammar);
handler_cpp.print(ostream_handler_cpp);
.... (略) ...

この場合、これまでどおり一種類のXMLエレメントに対応する仕事は
一つのクラスに任せることにすると、
NewDataGrammar, NewDataElement, NewDataType...
NewHandlerHeaderGrammar, NewHandlerHeaderElement...
NewHandlerCppGrammar, NewHandlerCppElement...
といった大量のクラスを作らなければいけなくなります。
うまく抽象化できているならそれでも構わないのですが、
その抽象化もなかなか難しいところです。

Header、Cpp それぞれで共通の構造を抜き出すことは多少は可能でしょうが、
DataElement::printGetterMethodDeclaration() // for Header
DataElement::printGetterMethodDefinition() // for Cpp
DataElement::printInlineGetterMethodDefinition() // for Header
のようにCppとHeader、あるいはHandlerとInstanceでは操作や構造が異なります。

このあたりうまく抽象化、パターンの適用等はできないか考えているのですが、
なかなか解決できません。皆さんならどうされますか?
アイディアや適用できるパターン等をご教示ください。よろしくお願いします。

526 名前:デフォルトの名無しさん :04/09/14 21:15:01
漏れなら生成ルールを記述する適当な中間言語を用いるけど。
あるいは XSLT で C 寄りの文法の XML に直して、そこから C へ、と2段階で。

527 名前:デフォルトの名無しさん :04/09/14 21:24:50
>>521
cppll にでも逝ってみれ。
あそこの管理人がむしゃぶりつきそうなネタだ。

ひょっとして、ネタ的に >>521 自身があそこの管理人か?

528 名前:521 :04/09/14 21:35:01
ご回答ありがとうございます。

>>526
>生成ルールを記述する適当な中間言語
といいますと、たとえば……?
何かキーワードをいただければ調べてみます。

>XSLT で C 寄りの文法の XML に直して、そこから C へ、と2段階で
あまり汎用的になりすぎてしまっても時間的に厳しいような気がします。
現段階ではXMLで定義するのはデータが中心なので
比較的簡単にあらかじめ決めた枠内のC++コードに落とせるのですが。。
それとももしかしてそういう汎用ツールがどこかに転がっていたりしますか?

>>527
情報ありがとうございます。
GoogleしてMLの紹介ページを見てきたのですが、
ライブラリ関係のMLみたいでしたが。。。
επιστημηさんの名前は聞いたことはあります。

529 名前:デフォルトの名無しさん :04/09/14 21:49:42
>>528
あのMLはスタンス的にはこのスレとほぼ同一だから、あそこで聞いてみれ。
ネタ的にほぼ確実にあそこ管理人が相談にのってくれるから。

530 名前:521 :04/09/14 21:56:24
>>529
MLなんて三年くらい参加してないし、恥ずかしいなぁ。。。
でも、これからメールアドレスを取得してML入会してきます。
あちらで質問することを決心したらここに書きますので、
それまでの間に何かアドバイスやアイディア等ありましたら
こちらへレスをいただければ幸いです。よろしくお願いします。

531 名前:521 :04/09/14 22:38:58
おし、それでは勇気を出して
http://www.freeml.com/ctrl/html/MLInfoForm/cppll@freeml.com
で質問してきます。皆様、ありがとうございました。

532 名前:デフォルトの名無しさん :04/09/14 22:42:33
>>531
たまにはこっちにも帰ってくるんだよ。

533 名前:デフォルトの名無しさん :04/09/14 23:02:54
コンストラクタの初期化子でnewしてもいいんですか?

534 名前:デフォルトの名無しさん :04/09/14 23:06:40
>>533
いいよ。

535 名前:デフォルトの名無しさん :04/09/14 23:11:32
ええかー ええのんかー

536 名前:533 :04/09/14 23:11:46
>>534
thx!

537 名前:デフォルトの名無しさん :04/09/14 23:13:01
>>535
まずいの?

538 名前:デフォルトの名無しさん :04/09/14 23:18:18

class Test
{
public:

Test(void) : test_(new Test) {};

virtual ~Test(void) {};

private:

Test * test_;
}


539 名前:533 :04/09/14 23:26:05
>>538
???
普通にintとかをnewするのならOKですよね?
例外うんぬんはおいておいて

540 名前:デフォルトの名無しさん :04/09/14 23:26:40
DOS攻撃だ!!!

541 名前:デフォルトの名無しさん :04/09/14 23:35:22
>>538
おもしろいですねぇ〜。

#include <iostream>

class foo
{
 public:
  foo() : pF(new foo){}
 private:
  foo *pF;
};


int main()
{
 try{
  // ↓例外が起きる
  //foo *fF = new foo;
  
  // 例外が起きない
  foo x;
 }
 catch(...)
 {
  std::cout << "例外" << std::endl;
 }
}

542 名前:533 :04/09/14 23:48:42
>>541
なぜ?
foo x;でも結局 new foo が呼ばれて同じことじゃないの?

543 名前:533 :04/09/14 23:52:26
VC6で試したらどっちも例外おきましたよ???

544 名前:デフォルトの名無しさん :04/09/14 23:54:56
コンストラクタに失敗したときのクリーンアップを安全に行いたいなら
スマートポインタにしたほうが良い。

545 名前:デフォルトの名無しさん :04/09/15 00:00:59
class A {
private:
 Obj* p;
public:
 A() try :
  p(new Obj) // ←例外が起きる
 { }
 catch(...) {} // ←握りつぶす
}


546 名前:デフォルトの名無しさん :04/09/15 00:17:17
>>545
握りつぶした後、そのAのインスタンスはもはや生存期間を
過ぎていることに注意しなければならない。だから、一切
触ってはいけない。一応書いておくが。

547 名前:デフォルトの名無しさん :04/09/15 00:19:47
×catch(...) {} // ←握りつぶす
○catch(...) {} // ←握りつぶせない(暗黙のthrowが末尾につく)

548 名前:デフォルトの名無しさん :04/09/15 00:31:43
>>545
コンパイル通らん

549 名前:デフォルトの名無しさん :04/09/15 00:39:56
>>548
VC6使うな

550 名前:デフォルトの名無しさん :04/09/15 00:47:11
>>549
BCC5.5.1なんですけど・・・・

551 名前:デフォルトの名無しさん :04/09/15 00:54:15
>>548
gcc3.4.1なら通るね。>>545ってC++の文法に準拠しているのか?

552 名前:デフォルトの名無しさん :04/09/15 00:56:03
準拠してるよ。
VC7.1だと通るよ。
BCCはショボイから通らないかもね。

553 名前:デフォルトの名無しさん :04/09/15 00:58:05
>>552
ああ確かにVC7.1だと通った。switch文のcaseをまたぐブロックを入れるような感覚か。
ちなみにBCC5.6.4でも通らん。糞だなBCCは。

554 名前:521 :04/09/15 00:59:10
例のML、返事が来始めましたが……

むずいよう(;;)

555 名前:デフォルトの名無しさん :04/09/15 01:01:22
warota

あそこはオナニーMLだから、
C++の構文やいろんなライブラリを駆使した難解な答えがいくつも返ってくる。
その中から自分にあったものを拾うのがいいよ。

556 名前:デフォルトの名無しさん :04/09/15 01:03:40
>>542
VC7.1でやったけど、例外起きませんでしたけどねぇ…。。。
ひょっとして最適化が働いたかな?

>>554
''例のML'' はレベル高いですからねぇー。

557 名前:デフォルトの名無しさん :04/09/15 01:10:37
>>556
自分で自分を作る無限連鎖って最適化で消されるもんなの?

558 名前:デフォルトの名無しさん :04/09/15 01:10:52
>>550
さっさとBCCなんて捨ててvctk拾ってこいよ
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/

559 名前:デフォルトの名無しさん :04/09/15 01:15:09
>>558
無理です。BCB6使ってますから。
でもVC7.1もあるので文法はVC7.1もしくはgcc3.4.1(MinGW)で試しまつ。
#MinGW早くgcc3.4.2出してくれ〜。

560 名前:デフォルトの名無しさん :04/09/15 01:21:32
bcb6のbcc32は5.5.1じゃなくて5.6.xだろ?
5.5.1なんていうからフリーのBCC使ってると思ったんだよ

561 名前:デフォルトの名無しさん :04/09/15 01:22:49
3.4系のgccなんてバグだらけのモノよく使えるな。

562 名前:デフォルトの名無しさん :04/09/15 01:23:30
ここは標準スレですコンパイラ比較スレではありませんコンパイラの比較は
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
でどうぞ

563 名前:デフォルトの名無しさん :04/09/15 01:26:29
関数tryブロックは標準の話です、コンパイラ依存の機能ではありません

564 名前:デフォルトの名無しさん :04/09/15 01:33:45
>>560
5.5.1にBCPad組み合わせたものとBCC5.6.4(BCB6)の両方使ってます。
BCB6を立ち上げるのが面倒だったのでBCC5.5.1使いました。でも
BCC5.6.4使っても全く同じ結果でした。
>>561
まあそうですがgccは仕事には使ってないので。
>>562>>563
スマソ。本当に文法に違反していると勘違いしたもので。私が悪かったです。

565 名前:デフォルトの名無しさん :04/09/15 02:33:13
そんなにコンパイラに依存する文法なら代替コードを考えたほうがいいのではないだろうか。

566 名前:デフォルトの名無しさん :04/09/15 02:36:53
>>565
俺は素直にauto_ptr使ってる。

567 名前:デフォルトの名無しさん :04/09/15 08:18:44
std::list<Hoge*> hoge;

voif foo( const std::list<const Hoge*> & );
な関数にそのまま渡すことはできないのでしょうか?
fooではHogeのconst付きの関数しか呼べないようにしたいのですが。

568 名前:デフォルトの名無しさん :04/09/15 08:28:05
>>567はスルーでよろ。
自環境での結果をろくに書かないのはただの荒らし。

569 名前:デフォルトの名無しさん :04/09/15 08:39:23
そういう"解説"が必要であると判断する程度には
「ただの荒らしではない」と考えているわけですね? :-P

570 名前:デフォルトの名無しさん :04/09/15 08:55:09
>>567
型が違うからできないな。
どうせコンパイラもそう言ってるだろ。

解決策は、あまり簡単なのは思いつかないなぁ。
reinterpret_cast で動くんだろうけど、それじゃダメだろうし。

571 名前:デフォルトの名無しさん :04/09/15 08:55:30
>>569
ただの荒らしだと考えてるからこそスルーを要請したわけだが。
const付で呼びたい?なら勝手に呼べ。ってこった。

572 名前:デフォルトの名無しさん :04/09/15 09:43:46
std::list<Hoge*>::const_iteratorを使って呼ぶべきだなこの場合

573 名前:デフォルトの名無しさん :04/09/15 09:50:15
>>571
> ただの荒らしだと考えてる
本当にそう思っているなら、何も書かずにいればいいわけです。
要請などと言いつつ、いきなり自分自身が「スルーできてない人」になる必要は
まったく無い :-P

つまり、荒らしだと考えたというより、自分の美学(くすくす)に反する内容だったので
「これを皆が荒らしと見なす流れが欲しかった」だけでしょう。
でも実際のところは荒らしというほどではないので、放っておいたら
他の人はそう考えない。ちゃんと回答してしまう可能性が高い。それは嫌だ。
だからわざわざ「こういう風に荒らしなんですよ」と、蛇足感丸出しな"解説"なんぞをして、
「自分に乗っかる人を募った」わけですね。全然ダメだったようですが ;-)

574 名前:デフォルトの名無しさん :04/09/15 10:18:24
デバッグ時にassertを使うのはよくやりますが、これだとassertが埋め込まれた
個所の呼び出し元までは特定できませんよね。
それでassertを呼ぶ代わりに例外を発生させるようにしてデバッグしてるのですが
これはやらないほうがいいんでしょうか?

後に本当に発生すべき例外だと分かって、かつ戻り値の変更が難しい場合は
正規のコードとして残す事も考えてます。

575 名前:デフォルトの名無しさん :04/09/15 10:27:04
>>574
環境依存だけどVCなら_ASSERTでファイル名と行番号が出る。

576 名前:デフォルトの名無しさん :04/09/15 10:43:55
自動変数よりstatic変数の方が速いの?

577 名前:マイク ◆yrBrqfF1Ew :04/09/15 10:51:24
早いよ。

578 名前:デフォルトの名無しさん :04/09/15 11:13:41
嫌、遅い。
自動変数はほぼ確実にキャッシュに載ることが期待できるし。

579 名前: ◆FIcNi4f8js :04/09/15 13:58:00
>>575
そういう話じゃなくて、呼び出し元を知りたいんだから
スタックトレースとかしなきゃ駄目でしょ?

580 名前:デフォルトの名無しさん :04/09/15 14:12:26
>>575
assertを上書きして、お望みの機能を付ければよろしい。

581 名前:デフォルトの名無しさん :04/09/15 14:19:08
>>579
(VC のように) __FILE__ とか __LINE__ を使ったマクロで実装すればよい、ということでは?

582 名前:デフォルトの名無しさん :04/09/15 15:16:43
インクルードの順番を気にせずヘッダファイルを
インクルードする方法ってありませんか?

何度インクルードしてもいいように
#ifndef _DATA_H_
#define _DATA_H_

#endif //_DATA_H_
で囲む方法は知っていますが。

583 名前:デフォルトの名無しさん :04/09/15 15:26:11
インクルードの順番を気にすることなんてあるの?

584 名前:デフォルトの名無しさん :04/09/15 15:28:41
[open.h]
{

[close.h]
}

[main.cpp]
int main()
#include "open.h"
return 0;
#include "close.h"

585 名前:デフォルトの名無しさん :04/09/15 16:33:03
先生!
newで作ったクラスのインスタンスを、自滅させた場合(delete this)、
後に外の関数で解放されたことを知るには、どのようにすればいいのでしょうか?
教えてください。。

586 名前:デフォルトの名無しさん :04/09/15 16:36:29
>>585
デストラクタの最後の行でthis=NULL;

587 名前:デフォルトの名無しさん :04/09/15 16:36:48
開放されたと言う情報を外に伝えるだけ

588 名前:585 :04/09/15 16:49:39
む、思ってたより単純な事みたいですね。
ありがとございまーす。


589 名前:デフォルトの名無しさん :04/09/15 17:05:03
>>586
thisってconstじゃなかったか。
釣り?

590 名前:デフォルトの名無しさん :04/09/15 17:10:15
そもそも破棄されたオブジェクトにアクセスする可能性のあるような
プログラムではdelete this;をするべきじゃないと思うんだけど。
起動したらあとはなにも知らないで良いような自立したオブジェクトだけ
delete this;するべきじゃないの?

591 名前:デフォルトの名無しさん :04/09/15 19:44:34
するべきなのか

592 名前:デフォルトの名無しさん :04/09/15 19:51:11
>>591
delete this; の前に自殺予告が出せるオブジェならありうるべ。

593 名前:デフォルトの名無しさん :04/09/15 20:43:25
delete this;するべき状況は思い付かないな

594 名前:デフォルトの名無しさん :04/09/15 20:49:44
windoze

595 名前:デフォルトの名無しさん :04/09/15 20:56:01
WindowsのMFCやWTLなら使うこたぁある。

596 名前:デフォルトの名無しさん :04/09/15 22:16:11
>>593
侵入型参照カウント

597 名前:デフォルトの名無しさん :04/09/16 00:18:21
delete this;する関数名もほぼお決まりだな
void desroy();


598 名前:デフォルトの名無しさん :04/09/16 00:21:57
デスローイ!

599 名前:デフォルトの名無しさん :04/09/16 00:25:11
pimplとかcloneとかselfとか、最初から決まってる方が
分かりやすくて名前考えなくて済むから楽でいいよね

600 名前:デフォルトの名無しさん :04/09/16 00:41:31
News 2004-09-15: C++ Standard Core Language Issues List (Revision 31) is available
ttp://www.open-std.org/jtc1/sc22/wg21/

601 名前:デフォルトの名無しさん :04/09/16 00:42:07
>>572
それじゃ Hoge に const 付かないだろ。

602 名前:デフォルトの名無しさん :04/09/16 01:31:43
お前ら、デストロイをすぐに入力できるかね?
漏れはなぜか、「destory」。何度やってもこうなってしまう。
destroyと入力できない。同じクセがあるヤシいる?

603 名前:デフォルトの名無しさん :04/09/16 01:37:51
デストーリ?w

604 名前:デフォルトの名無しさん :04/09/16 01:44:57
destroy

605 名前:デフォルトの名無しさん :04/09/16 01:50:33
>>602
おれもなるよ

606 名前:デフォルトの名無しさん :04/09/16 01:56:24
clientがclinetになってしまうのに似てる。
ただ、clientはしょっちゅう使うスペルなので慣れてしまうけど、
destroyはあまり使わないのでいつまでたっても変なまま。

607 名前:デフォルトの名無しさん :04/09/16 01:57:09
   ∧_∧  デストローイ!!  
 |\ΦДΦ)   /|
 ○ <  ζ) <  ○                  人人
 | >  旦  > |              <   ∧∧  キュワアアアアア!!!
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|             ヽ(゚Д゚ )ノ
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |               (  へ)
  |              |                く

608 名前:デフォルトの名無しさん :04/09/16 02:24:08
おまえら何くだらねーこと言ってんだ。

俺もよくやる。

609 名前:デフォルトの名無しさん :04/09/16 02:28:05
constがcosntってなる・・・

610 名前:デフォルトの名無しさん :04/09/16 02:31:43
itn。。。

611 名前:デフォルトの名無しさん :04/09/16 02:34:31
receiveとrecieve

612 名前:デフォルトの名無しさん :04/09/16 06:55:02
コンストラクタへのポインタって使えますか?
数種類のクラスからランダムで1つを選ぶってので、ポインタをテーブルにいれといてそこから呼び出したいんですが

613 名前:デフォルトの名無しさん :04/09/16 10:15:48
そういうときこそdestroyの逆でよく使われる、
createですよ。
詳しくはabstract factoryデザインパターンをごらんあれ。

614 名前:デフォルトの名無しさん :04/09/16 10:18:45
>>612
オブジェクトを生成するstatic関数を定義すればOK。
で、生成用のstatic関数でオブジェクトの生成方法を選択する。
複数のクラスを生成するならば、基底クラスで生成メソッドを定義し、
そいつをキャストして返してやる。

あとは、そのポインタをdynamic_castなりしてやれば問題なし。
GoFで言えば、Builderになるのかな?


615 名前:614 :04/09/16 10:20:26
>>612,613
かぶった…
abstract factoryか勘違いスマソ

616 名前:デフォルトの名無しさん :04/09/16 10:25:27
>>613>>614
なるほど、それ忘れてました

617 名前:デフォルトの名無しさん :04/09/16 13:07:23
>>602
自分も昔「destory」ってよくやってしまてたよ。

同様に
true→ture
label→lable
もよく間違ってったよ…

618 名前:デフォルトの名無しさん :04/09/16 16:15:33
retrunを忘れるな。

619 名前:デフォルトの名無しさん :04/09/16 16:16:54
>>613-615
factory methodだろ

620 名前:デフォルトの名無しさん :04/09/16 16:48:19
pritnf

621 名前:デフォルトの名無しさん :04/09/16 20:05:02
Drwa

622 名前:デフォルトの名無しさん :04/09/16 20:14:48
>>612
コンストラクタのアドレスは取得できない

623 名前:デフォルトの名無しさん :04/09/16 20:58:09
>>622
コンストラクタも静的にすれば……。

624 名前:デフォルトの名無しさん :04/09/16 21:10:42
>>623
俺がつっこむ必要なさそうだなw

625 名前:デフォルトの名無しさん :04/09/17 00:50:28
falseを「フェイルス」って発音する上司がいるんですけど、
どうしたら良いでしょう?
それ聞くと噴出しそうになるので。

626 名前:デフォルトの名無しさん :04/09/17 00:53:48
>>625
fail と混同してるんだろうなぁ・・・。

とりあず、2択だな。
1. ちゃんと正してあげる
2. 慣れる・自分も使う

627 名前:デフォルトの名無しさん :04/09/17 01:16:54
fail→連続する母音は前の母音が二重母音化
false→eで終わる単語はその前の母音が二重母音化<alはallの如き発音に
case→eで終わる単語はその前の母音が二重母音化

なまじ単語の知識がある人こそ填まりかねない罠。

628 名前:デフォルトの名無しさん :04/09/17 01:17:38
>>625
warningを「ワーニング」って発音するやつが身の回りに20%くらいいるけどもう慣れたよ。
人前で話す機会には訂正してあげてる。

629 名前:デフォルトの名無しさん :04/09/17 01:24:18
ウォーニン

630 名前:デフォルトの名無しさん :04/09/17 01:43:36
英語なんて日本人がどんなに正確であろうと思われる発音しても
nativeから見ればップって感じだからどうでもよくね?

631 名前:デフォルトの名無しさん :04/09/17 01:49:33
マックスストア

632 名前:デフォルトの名無しさん :04/09/17 02:58:13
Make your dream come false;

633 名前:デフォルトの名無しさん :04/09/17 03:02:01
>>628
ワーニングであってるよ。厳密には、(ゥ)ワニング。
ウォーニングと発音するのは厨房。
Doom3でしょっちゅう聞いたよ、ワーニング。

634 名前:デフォルトの名無しさん :04/09/17 03:15:14
ほれ。goo辞書の発音。
http://dictionary.goo.ne.jp/voice/w/00090699.wav

635 名前:デフォルトの名無しさん :04/09/17 03:31:32
活きた英語じゃなくて受験英語を目指すあたりが厨。
英語試験担当者(生粋の日本人)が喜んでとりあげそうなネタだ。
でも実態は違うというオチ。アメリカなら、ワーニングでいいよ。
お利巧さんは、イギリスにでも逝ってろってこった。

636 名前:デフォルトの名無しさん :04/09/17 03:58:30
ウォーニングだろうが、ワーニングだろうがどっちにしろ
日本語発音なんだからどうでもいい。

637 名前:デフォルトの名無しさん :04/09/17 04:00:59
>>628が元凶

638 名前:デフォルトの名無しさん :04/09/17 04:29:41
>>632
ワラタ

639 名前:デフォルトの名無しさん :04/09/17 13:05:48
hong kong
king kong


640 名前:デフォルトの名無しさん :04/09/17 13:08:27
>>632の笑い所がわからん

641 名前:デフォルトの名無しさん :04/09/17 13:38:35
>>640
中学英語からやり直してこい

642 名前:デフォルトの名無しさん :04/09/17 15:23:56
あなたの夢を喜劇にしなさい。

643 名前:デフォルトの名無しさん :04/09/17 16:44:11
falseの発音は「フォルス」でいいの?

644 名前:デフォルトの名無しさん :04/09/17 16:58:35
「厳密には」とか言いながらカタカナ表記で、
しかも最後が「グ」なんて書く
頭の悪い人が後を勃たない。

645 名前:デフォルトの名無しさん :04/09/17 17:08:57
厳密には、
頭の悪い人ではなく、バカが悪い人と書く。

646 名前:デフォルトの名無しさん :04/09/17 17:11:50
true = トルエ
false = ファルセ

647 名前:デフォルトの名無しさん :04/09/17 17:19:17
ファールス

648 名前:デフォルトの名無しさん :04/09/17 17:24:27
int=あいえぬてぃー
double=だぶる
char=きゃら
float=ふろーと
long=ろんぐ
unsigned=あんさいんど
true=とぅるー
false=ふぁーるす
class=くらす
struct=すとらくと
template=てんぷれーと
stdio=えすてぃーでぃーあいおー
stdlib=えすてぃーでぃーりぶ
iostream=あいおーすとりーむ
fstream=えふすとりーむ
vector=べくたー
deque=できゅー


649 名前:デフォルトの名無しさん :04/09/17 17:25:43
cout=しーあうと
cin=しーいん
cerr=しーえらー

650 名前:デフォルトの名無しさん :04/09/17 17:29:18
string=すとりんぐ
wstring=だぶるすとりんぐ
boost=ぶーすと
stlport=えすてぃーえるぽーと

651 名前:デフォルトの名無しさん :04/09/17 17:31:29
reinterpret_cast=れいんたーぷりときゃすと

652 名前:デフォルトの名無しさん :04/09/17 17:35:27
operator=おぺれーた

653 名前:デフォルトの名無しさん :04/09/17 17:40:20
cinco=チンコ

654 名前:デフォルトの名無しさん :04/09/17 17:41:29
queue=きゅー
find=ふぁいんど
find_if=ふぁいんどいふ
lower_bound=ろうあーばうんど
upper_bound=あっぱーばうんど
equal_range=いこーるれんじ
remove=りむーぶ
for_each=ふぉーいーち
partition=ぱーてぃしょん
nth_element=えぬてぃーえいちえれめんと
iterator=いてれーた
const=こんすと

655 名前:デフォルトの名無しさん :04/09/17 17:45:06
int=いんと
double=どうぶる
char=ちゃー
float=ふろーぁと
long=ろんぐ
unsigned=あんさいねど
operator=おぺらーとぁ
while=わいる

656 名前:デフォルトの名無しさん :04/09/17 17:45:35
while=ほわいる

657 名前:デフォルトの名無しさん :04/09/17 17:46:58
regex=れじぇっくす
C++=しーぷらすぷらす

658 名前:デフォルトの名無しさん :04/09/17 17:47:30
operator=おぺらとーる

659 名前:デフォルトの名無しさん :04/09/17 17:48:11
>>648
int イントでは?

660 名前:デフォルトの名無しさん :04/09/17 17:51:30
.cppファイルと.hファイルの違いって何なんでしょう。
cppファイルが複数あった場合、コンパイル時どういう順で展開されるんでしょうか

661 名前:デフォルトの名無しさん :04/09/17 17:51:51
別にあいえぬてぃーでも問題無いんじゃない?
doubleをでぃーおーゆーびーえるいーとか読まれたら引くけど

662 名前:デフォルトの名無しさん :04/09/17 17:52:17
>>660
こんぱいらにおくったじゅん

663 名前:デフォルトの名無しさん :04/09/17 17:53:23
4ヶ月ぶりぐらいにC++をやったら、プログラムを実行できなくなりました。
原因は全くわかりません。初心者丸出しの質問ですが、どなたか何が
原因と思われるかわかりませんか?

664 名前:デフォルトの名無しさん :04/09/17 17:55:32
>>663
あなたが4ヶ月ぶりくらいにC++をやったこと

665 名前:デフォルトの名無しさん :04/09/17 17:57:34
>>660
hファイルはコンパイル前にcppファイルに取り込まれる。
cppファイルは取り込んだhファイルごとコンパイラにかけられてオブジェクトファイルになる。

666 名前:デフォルトの名無しさん :04/09/17 17:57:58
>>663
どんなプログラムでどんなエラーが吐き出されたとか
詳細を書かなければ誰も答えてくれませんよ

とマジレスしましたがネタですかね(?)

667 名前:デフォルトの名無しさん :04/09/17 17:58:16
int = いんてじゃー

668 名前:デフォルトの名無しさん :04/09/17 17:58:18
>>664
原因が何だか本当にわかりません。
ビルドの結果はエラーなしなのですが、実行すると、「プログラムを実行できません」と出ます。
マジで困ってます・・・OTL

669 名前:デフォルトの名無しさん :04/09/17 17:58:22
1000 2000=せんにせん
2000 4000=にせんよんせん
5200=ごんに
3900=ざんく
1000=せんてん
7700=なななな

670 名前:デフォルトの名無しさん :04/09/17 17:59:18
家のパソコンが夜な夜な勝手に動きまわるんです。
たすけてください

671 名前:663 :04/09/17 17:59:47
>>668は僕です。
>>666 
ネタじゃないです・・・。エラーは出てないんですが、実行ができません。

672 名前:デフォルトの名無しさん :04/09/17 18:00:57
>>667
そこiいんてじゃーねとかいうとintegerって書かれるぞ

673 名前:デフォルトの名無しさん :04/09/17 18:01:53
>>671
板違い

674 名前:663 :04/09/17 18:03:22
>>673
板違いなんですか・・・?確かにプログラム以前の問題だとは思いますが・・誰もわかりませんかね?

675 名前:デフォルトの名無しさん :04/09/17 18:06:30
>>674
開発環境に沿ったスレで質問した方がきちんと答えてくれる人が
いると思われ。
そこでもう少し詳細を述べましょ

676 名前:663 :04/09/17 18:08:00
>>675
そうですか・・わかりました。ありがとうございます。

677 名前:デフォルトの名無しさん :04/09/17 18:12:37
>>648
stdio=スタンダードアイオー
stdlib=スタンダードリブ
って言わないの?
俺だけ?

678 名前:デフォルトの名無しさん :04/09/17 18:18:04
GUI=じーゆーあい
CUI=しーゆーあい
stdio=すとでぃお


679 名前:デフォルトの名無しさん :04/09/17 18:18:49
GNU=ぐにゅ かっこつけるとき ぬー

680 名前:デフォルトの名無しさん :04/09/17 18:24:08
GUI=ぐい
CUI=くい
GNU=じーえぬゆー

681 名前:デフォルトの名無しさん :04/09/17 18:35:56
>>665
cppファイル1つに付き、オブジェクトファイル1つ作られるのでしょうか。それから、リンクってこと。??

682 名前:デフォルトの名無しさん :04/09/17 18:36:55
GNUはグニューと決まっている。て言うかC++の話題マダ〜?

683 名前:デフォルトの名無しさん :04/09/17 18:45:21
>>654なんて完全にC++の話題ジャン

684 名前:デフォルトの名無しさん :04/09/17 18:51:50
GUI=ぎゅい
CUI=きゅい
GNU=ぐぬぅ

685 名前:デフォルトの名無しさん :04/09/17 19:05:39
ここはとても低レベルなインターネッツですね。

686 名前:デフォルトの名無しさん :04/09/17 19:20:40
万個スレが削除された途端
こっちがネタスレになっちゃったな。

687 名前:デフォルトの名無しさん :04/09/17 19:23:41
endl=えんどえる
std=えすてぃーでぃー

それはそうと
cout << "Hello World" << endl;

<<
の読み方がわからん。
逆の>>も。

688 名前:デフォルトの名無しさん :04/09/17 19:30:52
左!左!

689 名前:デフォルトの名無しさん :04/09/17 19:32:39
NILはなんて読んだらいいの?

690 名前:デフォルトの名無しさん :04/09/17 19:40:05
NULL=ぬる
(void*)0=ぬるぽ

691 名前:デフォルトの名無しさん :04/09/17 20:01:14
>>690
#define NULL (void*)0ならどうなるよ?

692 名前:デフォルトの名無しさん :04/09/17 20:03:14
#define NULL (void*)0=しゃーぷでふぁいん ぬる ぬるぽ

693 名前:デフォルトの名無しさん :04/09/17 20:07:19
こんにちは。わたくし、ぬるぬるぽと申します。

694 名前:デフォルトの名無しさん :04/09/17 20:51:00
やけにスレが伸びてると思ったら。

695 名前:デフォルトの名無しさん :04/09/17 20:56:58
>>693
のび太みたいだな。

696 名前:デフォルトの名無しさん :04/09/17 21:50:18
大切な重複スレがゴミ箱に捨てられてしまった。

697 名前:デフォルトの名無しさん :04/09/17 21:50:55
ゴミ箱って書けないんだっけ

698 名前:デフォルトの名無しさん :04/09/18 00:46:50
質問です。
いまあるクラス用意します。たとえばこのクラスはファイルアクセスに関する単純な処理を提供します。
1バイトアクセスのReadByte、WriteByteがあるとします。このクラスをCBaseFileとします。
次にこれを使って用途がより限定的なクラスを作ります。
つまりCBaseFileでは処理が汎用的でコーディング量を節約できないためです。
そこでCMyFileを作成し、ReadLine、WriteLine(行;\r\nまでの単位を扱う)を提供したいとおもいます。
このときこのCMyFileはCBaseFileから継承したほうが良いのか、メンバに持つべきなのか、です。
Is AなのかHas Aなのかどっちにしたほうが良いのですか?

699 名前:デフォルトの名無しさん :04/09/18 00:48:57
どっちでも好きなほうでいいんでない?

700 名前:デフォルトの名無しさん :04/09/18 01:00:19
>>698
委譲で出来る事は全部委譲でやる。
委譲で出来なくてprivate継承で出来る事は全部private継承でやる。
それでもできなければprotected継承で。
それで無理なら考え直せ。

701 名前:698 :04/09/18 01:11:20
委譲って言葉をはじめて知りました。
メンバにもってその機能を使い、もう少し便利な形にして外に見せる、見たいな事でしょうか。
とりあえずメンバに持つやり方にします。
ありがとうございました。


702 名前:デフォルトの名無しさん :04/09/18 01:39:36
>>698
iostreamの設計を見つめてください

703 名前:デフォルトの名無しさん :04/09/18 01:49:26
自分の事は自分でやる...か。意味深な

704 名前:デフォルトの名無しさん :04/09/18 01:49:46
すごい複雑でつね。こんな設計見習うべきか躊躇しまふ。

705 名前:デフォルトの名無しさん :04/09/18 02:07:10
質問させて下さいな。
3桁毎に区切りが入った 2,234,713 のような10進文字列の取得は
皆さんどうやって実現してるんでしょうか?

706 名前:デフォルトの名無しさん :04/09/18 02:08:31
,を全部無視するだけじゃないの?

707 名前:デフォルトの名無しさん :04/09/18 02:10:17
sscanf(buff, "%d %d %d", &a,&b,&c); これは無理か?

708 名前:デフォルトの名無しさん :04/09/18 02:14:50
>>706
std::string s = "70,145,123";
s.erase(std::remove(s.begin(), s.end(), ','), s.end());
int result = atoi(s.c_str());

709 名前:デフォルトの名無しさん :04/09/18 02:14:52
無理だ。
int a,b,c;
char buff[]="10 20 30";
sscanf(buff, "%d,%d,%d",&a,&b,&c);
これでできたよ。。うちは

710 名前:デフォルトの名無しさん :04/09/18 02:15:31
C++だた...

711 名前:705 :04/09/18 02:15:34
質問の仕方が悪かったみたいです。
やりたい事は、int → char*です。
snprintf()とか_itoa()とかでは実現できないみたいなので質問しました。
一時は自力でやるべきかと思いましたが、ロケール毎で区切り文字などが違うらしいので、
なにか良い方法はないものかと思いまして・・・。

712 名前:デフォルトの名無しさん :04/09/18 02:18:56
>>711
>>708をちょっと変えて
!isdigitでremove_ifすればいいじゃない?
区切りが数字なんて無いでしょ?

713 名前:デフォルトの名無しさん :04/09/18 02:19:35
>>712は勘違いしますた

714 名前:デフォルトの名無しさん :04/09/18 02:27:13
>>713はそれを指摘しますた

715 名前:デフォルトの名無しさん :04/09/18 02:29:28
1,000,000  これが100万てことか。
例えば"1,000,000"ていう文字列を10進数に
直すって意味ではないのか。質問の意味が分からない。


716 名前:705 :04/09/18 02:34:34
>>715
ちょうど逆です。
1000000を"1,000,000"に変換したいのです。
なにか汎用的な方法とかあるんでしょうか?

717 名前:デフォルトの名無しさん :04/09/18 02:41:36
あります

718 名前:705 :04/09/18 02:46:42
>>717
是非ご教示下さい。

719 名前:デフォルトの名無しさん :04/09/18 02:59:10
自作
AddComma( moneyStr, ',', 10000 )
void AddComma(char *str, char chr, int money);
力不足でごめん。

720 名前:デフォルトの名無しさん :04/09/18 03:06:26
>>719はただのバカですが、ちゃんとできます。

721 名前:デフォルトの名無しさん :04/09/18 03:07:13
#include <iostream>
#include <string>
using namespace std;

string insert_comma (string str) {
 int pos = (int)str.length() - 3;
 while (pos >= 1) {
  str.insert(pos, 1, ',');
  pos -= 3;
 }
 return str;
}

int main (int argc, char *argv[]) {
 cout << insert_comma("10") << endl;
 cout << insert_comma("100") << endl;
 cout << insert_comma("1000") << endl;
 cout << insert_comma("100000") << endl;
 cout << insert_comma("10000000000") << endl;
 return 0;
}

722 名前:デフォルトの名無しさん :04/09/18 03:10:05
>>721も分かってないみたいですが出来ます

723 名前:デフォルトの名無しさん :04/09/18 03:12:31
メモリのプール化について説明してるサイトないですか?

724 名前:721 :04/09/18 03:20:12
>722
はあ?分かってないって何だよ。面白くねーなクソが。

あんた>717か?汎用的な方法ってやつの事か?
マニピュレータでも定義するんなら、とっととコード書くなりヒント与えるなりしたらどうだ。
# 確か標準マニピュレータの中にはコンマを付加するやつは無かったと思うけどさ。
# あるんなら早くポインタ示してやれよ。

725 名前:デフォルトの名無しさん :04/09/18 03:22:59
printf("%03d,%03d,%03d",(x%1000000000)/1000000,(x%1000000)/1000,(x%1000));

726 名前:705 :04/09/18 03:24:20
>>721
ご教示有難うございました。自作版ですね。


例えばWindowsでは、コントロールパネルの「地域と言語のオプション」から
各国毎の数値の表記方法が確認できるのですが、
アイスランド語やアゼルバイジャン語(50音順に並ぶ最初の2つの言語)は、
日本語の数値表記と違うみたいです。むしろ、日本と違う国がたくさんあるようです。
こういうのって、boostにあってもよさそうに思うのですが。

727 名前:デフォルトの名無しさん :04/09/18 03:33:04
boostなんか使わなくてもちゃんとロケールが定義されてる環境なら標準C++でできます。
>>724
gccみたいなお馬鹿なコンパイラでは無理ですよ

728 名前:デフォルトの名無しさん :04/09/18 03:33:57
ちなみにVC++7.1みたいな標準準拠度の高いコンパイラならOKです。

729 名前:デフォルトの名無しさん :04/09/18 03:35:47
文法の質問?なのですが、

Class TestClass{
  
  struct TestClass{
    int a,b,c;
    char c,d,e;
};
};

これって使えますか?
つまり、クラスのメンバの構造体の名前が、クラス名と同じという書き方はできるんでしょうか?

730 名前:デフォルトの名無しさん :04/09/18 03:38:06
他に誰も知らないみたいなのでそろそろ答えを出します。

#include <locale>
#include <iostream>

int main()
{
using namespace std;

int i = 1500000;
cout.imbue(locale(""));
cout << i << endl;
}

文字列に格納したければcoutの代わりにstringstreamを使えばOKです。
locale("")で使用環境のネイティブロケールを指定した事になります。

731 名前:デフォルトの名無しさん :04/09/18 03:40:04
ちなみにさっき書き間違えましたが、
お馬鹿なのはlibstdc++でgccではないかもしれません。

732 名前:デフォルトの名無しさん :04/09/18 03:40:55
>>724
無知をさらけ出さない方がイイですよ

733 名前:705 :04/09/18 03:49:40
>>730
早速、試してみました。有難うございました。
locale("")というのは、関数じゃなくてクラスのインスタンスなんですね。

標準C++は奥が深いなぁ。ちょっと目からウロコ。

734 名前:721 :04/09/18 04:05:29
>732
そうやって俺をイラつかせて、何をしたいんだ。
俺に恨みでもあるのか。それとも人をからかうのが好きなのか。
どちらにしても、お前は悪意をもって人を傷つけようとした。
こういう事はこれで最後にしろ。

735 名前:デフォルトの名無しさん :04/09/18 04:07:38
>ロケール毎で区切り文字などが違うらしい
だってこの質問文も読まないでカンマに固定してんだもん。

736 名前:デフォルトの名無しさん :04/09/18 04:21:55
>735
は?>705では3桁区切りとしか書いてねーじゃん。
だから俺も3桁で区切るコード書いたんだよ。

で、何だ。俺が>711を読んだ上で>721のコードを書いてしまったとして
お前はそれを「無知」つって笑うのか。これ、「無知」つーのか。
「不注意」じゃなくて。

737 名前:デフォルトの名無しさん :04/09/18 04:25:45
そろそろウザい。2人とも消えろ。な?

↓何事もなかったかのように質問ドゾー

738 名前:デフォルトの名無しさん :04/09/18 04:26:30
>>736
localeも知ってたんなら無知じゃなくて不注意でもいいけど、
locale自体知らなかったなら無知だろ。つーかどうでもいいよ。しつこいし。

739 名前:デフォルトの名無しさん :04/09/18 04:32:39
>>737
もう質問有るから何事もなかったように
>>723とか>>729とかに答えてやれよ

740 名前:デフォルトの名無しさん :04/09/18 11:01:35
>>723 boost::pool
>>729 やってみれ

741 名前:デフォルトの名無しさん :04/09/18 11:30:16
News 2004-09-18: The C++ Standard Library Issues List (Revision 32) is available
ttp://www.open-std.org/jtc1/sc22/wg21/

742 名前:デフォルトの名無しさん :04/09/18 12:27:19
自分の弁護に必死になるのは見苦しい。
相手が自分より良い方法を示してきたら素直に受け容れろ。

743 名前:デフォルトの名無しさん :04/09/18 12:47:32
一言多い人って子供っぽい

744 名前:デフォルトの名無しさん :04/09/18 13:23:18
はぁ

745 名前:デフォルトの名無しさん :04/09/18 13:35:14
>>743 いい例ですね

746 名前:デフォルトの名無しさん :04/09/18 13:46:34
そもそも>>721が中途半端な知識をひけらかすから悪い。
知らないなら黙っていればよかったのに。
しかもいつまでも粘着するし。

747 名前:デフォルトの名無しさん :04/09/18 14:11:23
以下のように動的に確保した2次元配列に関する質問です。
double** array2D(int imax,int jmax){
int i;
double *Mi,**M;
Mi=new double[imax*jmax];
M=new double*[imax];
for(i=0; i<imax; i++){
M[i]=Mi+i*jmax;
}
return M;
}

これを
int main(void){
double **c;
int i,j;
c= array2D(2,4);

for(i=0;i<2;i++){
for(j=0;j<4;j++){
c[i][j] = j+ 4*i;
print_pointer2D( c+i );
}
}
}
の様に用います。ここでprint_pointer2D関数は
void print_pointer2D(double **c){
printf("%f \n", c[0][0]);
}
という風に、渡されたアドレスの先頭をprintするだけの関数です。
質問は、print_pointer2D(c+i)とすればc[0][0]の値やc[1][0]の値をprintすることはできるのですが、
c[1][1]やc[0][2]等も渡すようにするにはprint_pointer2D関数の引数をどのようにすればよいでしょうか?

748 名前:デフォルトの名無しさん :04/09/18 14:27:15
いちいち相手して721の神経逆なでする事も無いじゃん


749 名前:デフォルトの名無しさん :04/09/18 14:45:29
>>747
普通にこうしたらだめ?
void print_pointer2D(double c) {
printf("%f \n", c);
}

750 名前:デフォルトの名無しさん :04/09/18 14:49:39
747は何か根本的にパーだから放置しる


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