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


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

C++相談室 part18
751 名前:750 :03/05/05 14:15
できないな。

752 名前:デフォルトの名無しさん :03/05/05 16:46
>>749
要するに、ファイルに直接
static int a;
とか書くとそのファイル内でしか a にアクセスできないという
ファイルスコープ変数/関数を実現する手段として提供されたのだ。
ファイルごとに違った名前空間名が自動的に与えられるけど、
その名前は実際には使えないような内部名になっている。
だから、namespace { } で囲んだ内部でしか使えないし、
別のファイルからは決して参照できない。

static int a; と書くのは今のC++では非推奨で、
namespace { int a; } などと書くのが推奨されている。

753 名前:デフォルトの名無しさん :03/05/05 17:34
無名の名前空間
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdndeepc/htm/deep04062000.asp

754 名前:746 :03/05/05 22:47
そうですか。
じゃあ無名の名前空間では関数の定義は中にいれないとだめなんですね・・。


755 名前:752 :03/05/05 23:50
スマン。間違えてた。

> namespace { } で囲んだ内部でしか使えないし、

# namespace { } のあるファイルでしか使えず、
だったね。

756 名前:デフォルトの名無しさん :03/05/05 23:51
>だから、namespace { } で囲んだ内部でしか使えないし、
嘘を教えちゃ駄目だろ

namespace
{
int a;
}

void foo()
{
a=0;
}

こうできる。

757 名前:デフォルトの名無しさん :03/05/05 23:51
む。

758 名前:752 :03/05/05 23:57
>>756-757
ごめんちゃい。

759 名前:デフォルトの名無しさん :03/05/06 01:22
case文の下を
case 0:
{

}
break;
でかこむのは常識ですか?

760 名前:デフォルトの名無しさん :03/05/06 01:25
非常識
聞くまでもなかろう。

761 名前:デフォルトの名無しさん :03/05/06 01:25
>>759
必要になるまでやらない。
囲む場合のインデントによく迷う。
迷った結果、
  {
  case 0:
   {
    int n = ...
   }
    break;
とかに落ち着いたりする。

762 名前:デフォルトの名無しさん :03/05/06 01:45
>>461
確かにインデントにはよく迷うな。

共通して使う変数なら
switch(a)
{
 int n;
case 0:
 ...
}
とかできるんだが、初期化忘れとかちょっと恐いので
それぞれのブロックで宣言した方がいい。

763 名前:デフォルトの名無しさん :03/05/06 01:47
俺は
case 0:{}break;
と書いてから中身を書く

764 名前:デフォルトの名無しさん :03/05/06 10:12
荒しのように見えるかもしれませんが、真剣な質問です。
Borland C++で、ドラクエみたいなゲームは作れるでしょうか?

765 名前:デフォルトの名無しさん :03/05/06 10:15
>>764
煽りのように見えるかもしれませんが、真剣な回答です。
作れます。

766 名前:764 :03/05/06 10:19
>>765
レス、どうも有り難うございましたm(__)m
現在本を買って勉強中ですが、どうも不安になってしまったのでお尋ねしました。
これで安心して勉強できます(^o^)

767 名前:デフォルトの名無しさん :03/05/06 10:19
>>764
BCCでDirectXやWinAPI(GDI)を駆使して
プログラミングするならドラクエもどきは作れる。
けど、結構な努力とそれなりのプログラミング技術が必要。
貴方が作れるかどうかは知らない。

768 名前:764 :03/05/06 10:22
>>767
勉強になります!
あんまり気負わずに、のんびり楽しみながら取り組もうと思ってます。

769 名前:デフォルトの名無しさん :03/05/06 11:58
柏原さんの標準C++の基礎知識を読んでいるんですが、
仮想関数を用いた実行時ポリモーフィズム(10章)の説明で、
基本クラス:Base
派生クラス:Derived
として、
Base *pbase = new Base;
....
pbase = new Derived;

とやっているのですが、これは、Base型のオブジェクトに Derive型のオブジェクトを
代入していることになって、成り立つ訳が分かりません。
どういうことでしょう?

また、
Base pbase = new Derive;
のような記述もありました。

770 名前:デフォルトの名無しさん :03/05/06 12:03
>>764
「RPGツクール」では、ダ・メ・な・の・か?


771 名前:デフォルトの名無しさん :03/05/06 12:11
10000円くらいするじゃねーか

772 名前:デフォルトの名無しさん :03/05/06 12:26
>>769
継承の意味を勉強しなおせとしか言いようがない。


773 名前:デフォルトの名無しさん :03/05/06 12:43
>>772
ポインタもね。

774 名前:デフォルトの名無しさん :03/05/06 13:05
>>773
あとコンストラクタもかな。

775 名前:デフォルトの名無しさん :03/05/06 13:38
>>769
「 Base pbase = new Derive; 」
って記述が本当にあったなら、著者があほ。

776 名前:デフォルトの名無しさん :03/05/06 13:53
継承クラスのポインタは基底クラスのポインタに代入できる決まりになっているから
代入できる。

777 名前:デフォルトの名無しさん :03/05/06 14:03
>>774
メモリリークもね。

778 名前: :03/05/06 20:44
>>776
それだけじゃ答えになってないと思う。

>>772
オブジェクト指向の多態性について勉強しる。

779 名前:デフォルトの名無しさん :03/05/06 21:50
>>778
アフォか?
ポリモーフィズムを実現する手段の話をしてるんだろ。
>>769の「仮想関数を用いた実行時ポリモーフィズム(10章)の説明で」が読めないか?


780 名前:デフォルトの名無しさん :03/05/06 23:44
決まりとして受け止めて
何故そんなことするか?
何故そんなことするとイイかを考えよ

781 名前:デフォルトの名無しさん :03/05/07 04:22
はじめて書きこむ初心者です〜
ファイルオープンできずにセグってしまいあたふたしてます(泣

ifstream inst1;
system("awk '{print $1\" \"$2\" \"$3}' inputfile.dat > hoge.dat");
inst1.open("hoge.dat",ios::in);
とかやろうとしてるんですが
fstreambase::open() from /usr/lib/libstdc++.so.3
でセグったとか言われてしまいます。
なんでだか見当もつかないのですがどうしてだかわかる人いませんか〜ToT

782 名前:デフォルトの名無しさん :03/05/07 04:50
セグった
ってどういう意味なんですか?

783 名前:デフォルトの名無しさん :03/05/07 04:54
質問で自分語使う奴って嫌だよね

784 名前:デフォルトの名無しさん :03/05/07 06:54
ったく、「セグる」って言葉も知らない素人が紛れ込んでいるとは。
レスの質が落ちるわけだ。

785 名前:デフォルトの名無しさん :03/05/07 07:55
セグる
  ∧_∧   
 ( ´∀`)< ぬるぽ せぐった

786 名前:デフォルトの名無しさん :03/05/07 08:25
セグる(笑)
Segmentation Faultかな?
だとしても、そんな妙な省略はしないなあ。

787 名前:デフォルトの名無しさん :03/05/07 08:45
業界10年いるけどセグったなんて用語は聞いた事無いなぁ。
インテル系の用語?

788 名前:デフォルトの名無しさん :03/05/07 09:01
きょうもみんなでセグりんこ!
みんなでなかよくセグりんこ!
目・肩・腰にセグりんこ!


789 名前:デフォルトの名無しさん :03/05/07 09:23
聞いたことないやつは一回実際にセグってみようぜ

790 名前:デフォルトの名無しさん :03/05/07 09:26
  ∧_∧   
 ( ´∀`)< せぐふぉ

791 名前:781 :03/05/07 09:57
う〜ん書き込み増えてるから期待して読んでみたらネタになってるだけでしたね〜

セグって来ます…


792 名前:デフォルトの名無しさん :03/05/07 11:05
>>775
Base *pbase = new Derive;
でした。
標準C++の基礎知識には継承クラスのポインタは基底クラスのポインタに代入できる決まりになっている趣旨の内容がどこにも取り扱われていませんでした。
ダメだなこの本。。。大体読んだのに。。。
だれか良い本紹介して〜。

793 名前:781 :03/05/07 11:24
ついネタに走りましたが
せぐるじゃなくてSegmentation Faultになるということで
教えてください〜よろしくおねがいします〜

794 名前:デフォルトの名無しさん :03/05/07 11:43
>>793
まずはsystemの呼び出しをコメントアウトしてみて動くかどうか・・・。
openを使わずにコンストラクタで開くようにしてみるとか・・・。

795 名前:デフォルトの名無しさん :03/05/07 12:50
>>792
「詳説C++」でも読んどけ

796 名前:デフォルトの名無しさん :03/05/07 13:05
セグルッテナンダ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>785



797 名前:デフォルトの名無しさん :03/05/07 14:35
プログラミング言語C++とARM

何で読まないの?

入門本で要領つかんだらすぐに捨ててこっち読めよ

798 名前:デフォルトの名無しさん :03/05/07 14:58
class CA{};

CA* pca=new CA;
delete pa;

とされた時に、このpaが開放されているか否かを確かめる方法は何か
ありますか?

799 名前:デフォルトの名無しさん :03/05/07 15:00
解放されているじゃん。

800 名前:デフォルトの名無しさん :03/05/07 15:06
開放してるけど、あるオブジェクトが開放されているか、否かの判定方法を知りたいんです。

if(pca==何かの値){開放されていない}
else{開放されている}

みたいな。

801 名前:デフォルトの名無しさん :03/05/07 15:09
言っている意味がよくわからない。
本当にシステムに返されているかどうか知りたいわけ?

802 名前:デフォルトの名無しさん :03/05/07 15:11
そうです。何かよい方法ありませんか?

803 名前:デフォルトの名無しさん :03/05/07 15:13
>>802
それって激しく環境依存なのでは?
環境を書くか、その環境専用のスレにゆかなければ答えは得られないのでは。


804 名前:デフォルトの名無しさん :03/05/07 15:24
>>797
ARM
こんな化石本読むんですか?

805 名前:デフォルトの名無しさん :03/05/07 15:33
機種依存しちゃうと話がややこしくなりますので、それでは、

void func(void){
CA* pca=new CA;
}

void main(void){
func();
}
とやると、このpcaはリークしますが、これが既に何者にも参照されていない
ことを知るにはどのような方法があるのでしょうか?
お願いします。

806 名前:デフォルトの名無しさん :03/05/07 15:58
>>805
どんな処理系でも通用する汎用的な方法は無い。
boost::shared_ptr とか使って、そもそもリークしないように汁。


807 名前:デフォルトの名無しさん :03/05/07 16:05
>>798
ポインタの指す先が何なのかは一般的に不明。
参照先が有効かどうかは、雰囲気で察するしかない。

次のルールで、無効なオブジェクトへのアクセスはなんとなく回避できる。
1. オブジェクトを変更できるポインタは、インスタンスごとに一つしか作らない。
2. deleteしたら、すぐにnullを代入する。
3. オブジェクトを変更しないポインタは、自動変数にする。

スマートポインタについては次の人が説明してくれる。
よろしく↓

808 名前:↑漏れにはムリ :03/05/07 16:23
επιστημηタソによるauto_ptrの説明
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/_03.html#ref_auto_ptr

某アーカイバ作者K.INABAによるsmart_ptrの説明
http://www.kmonos.net/alang/boost/smartptr.html

809 名前:デフォルトの名無しさん :03/05/07 18:11
VCなら _CRT なんちゃらで 検索すれば、メモリリーク検出できる関数があったりするが・・・。

810 名前:デフォルトの名無しさん :03/05/07 20:38
class object;
vector<object *> objects;

class object
{
object(){ objects.push_back(this);}
~object(){ objects.erase(find(objects.begin(),objects.end(),this)); }
};

ほれ、全てのクラスをこれから継承しろ。 これでできるだろ。


・・・できますか?

811 名前:デフォルトの名無しさん :03/05/07 20:39
>>810
それじゃあ参照されてるかどうか分からないよ?

812 名前:デフォルトの名無しさん :03/05/07 22:04
>>811
むほっ >>800の質問に答えてた。 後のレスをあんま読んでなかった。



813 名前:デフォルトの名無しさん :03/05/07 23:02
>>809
あれはデバッグウインドウに出るだけでは?

というかauto_ptrとか使わずにそういうのを作るっていうのは
つまりはガベージコレクタを作るっていうのと同じなんじゃぁ・・

814 名前:デフォルトの名無しさん :03/05/07 23:22
>>809
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
これですね。

>>813
どの new でリークしたかと、サイズと、内容も出ます。
でも、デフォルトのまま使うと
crtdbg.h の中でリークしたと出てきます(笑
VC6 のでしか確かめてませんけど、
これはどうしようもないはずなので多分 .NET でもそうなってるはず。
こうして NEW を使うようにするのがいいです。

#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
#if defined(_DEBUG) && !defined(NEW)
#define NEW ::new(_NORMAL_BLOCK, __FILE__, __LINE__)
#else
#define NEW new
#endif

815 名前:813 :03/05/07 23:30
>>814
なるほど、勉強になります。
やっぱり810のやり方が一番妥当でしょうね。

デストラクタをvirtualにした方がいい気もしますが

816 名前:デフォルトの名無しさん :03/05/07 23:41
>>815
別に delete するわけじゃないんで
仮想デストラクタにする必要もないかと。
全部のクラスに仮想関数テーブルがくっつくのもいやだし。
CPoint とか CRect とか...。

あとは、仮想継承しないと鬱陶しい事になるのと、
どこで確保した奴がリークしたのか分からないことかな...。
そして、標準ライブラリなどのクラスには対応できないのと。

817 名前:デフォルトの名無しさん :03/05/07 23:47
bcc32を利用した、簡易な開発環境を作ってみたいと思っています。
そのため、ボタンを押すとコマンドプロンプトの窓が開いて中で(別の場所で)指定した
プログラムをbcc32でコンパイルし、その結果がその窓に残るようにしたいと思います。

ですが、うまくいきません。

CreateProcess( NULL, "bcc32 c:\\hoge.cpp", NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, "c:\\", &si, &pi )

みたいなかんじでbcc32 c:\hoge.cppを実行すると、確かにコンパイルされますが、窓がすぐ閉じてしまいます。
かわりにcmd.exeを実行すると窓は開いたままですが、どうやってbcc32を起動するかがわかりません。

どなたかお願いします。

818 名前:817 :03/05/07 23:48
すみません。スレを間違えました。
C++Builder相談室に逝きます。

819 名前:デフォルトの名無しさん :03/05/07 23:49
cmd /c bcc32 c:\\hoge.cpp

820 名前:デフォルトの名無しさん :03/05/07 23:49
>>816
なるほど。
そういう実装する時は大概最後にリスト辿って解放漏れをdeleteするためだと思ってたもので(汗
確かに継承しないとややこしいことになりますね。
納得です

821 名前:デフォルトの名無しさん :03/05/07 23:50
>>817
スレ違いだよ

822 名前:デフォルトの名無しさん :03/05/07 23:51
>>821
すれ違いだよ

823 名前:817 :03/05/07 23:56
>>821 すみません。
あとちょっとだけ。

>>819さん、ありがとうございます。
あまりの即レスに感激です。
ただ、残念ながら、ためしたところ、やはりコマンド窓はすぐに閉じてしまいました。
もし、対策がありましたら、お願いします。

824 名前:デフォルトの名無しさん :03/05/08 00:03
内容をリダイレクトして、
自分のプログラムのウィンドウに内容を表示した方がカッコよくない?

825 名前:817 :03/05/08 00:10
>>824
ありがとうございます。
リダイレクトしようと、
bcc32 c:\\hoge.cpp > c:\\log
とすると、なんだか不調になります。

826 名前:デフォルトの名無しさん :03/05/08 00:18
不調...。
何なんだろ。
あと、調べてみたら、Windows98 とかでは
エラー出力をそのままではリダイレクトできないみたいね。

827 名前:817 :03/05/08 01:06
>>826
すみません。
やってみると、一瞬で窓が閉じるのでよくわからない(自分が情けない)のですが、
コンパイラの起動後、リンカまでいっていない感じです。
リダイレクトでできるはずのファイルもできません。

すみません。とりあえず、あきらめます。

828 名前:デフォルトの名無しさん :03/05/08 11:47
MFCのCWinApp::InitInstance()のオーバーライドのソースに
#include <iostream>を入れると、

>error LNK2005: "void __cdecl operator delete(void *)" はすでに
>libcpmtd.lib(delop.obj) で定義されています
>fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
>link.exe の実行エラー

というエラーがでまつ。
MSDNでは、マルチスレッド対応してないライブラリが混ざってると。

runtime_errorをキャッチしたいだけなのですが、どうすれば宜しいですか?

829 名前:デフォルトの名無しさん :03/05/08 12:09
なんでMFCスレの話をこっちに持ってくる?

830 名前:デフォルトの名無しさん :03/05/08 16:45
標準のC++にfinallyはありませんか?

831 名前:デフォルトの名無しさん :03/05/08 16:46
無いです

832 名前:デフォルトの名無しさん :03/05/08 17:16
すみません、C初心者の者ですが↓のプログラムでエラーがでます。あってると思うのですが・・・。コンパイラはvisualCです。
#include <stdio.h>
#include <math.h>
#include <igraph.h>
int main(void)
{
int i,r;
float th;
double x[5],y[5];
r=100;
th=2*3.1415926535/20;
for(i=0;i<=4;i++){
x[i]=300+r*cos(th);
y[i]=300-r*sin(th);
th=th+(2*3.1415926535)/5;
}


833 名前:デフォルトの名無しさん :03/05/08 17:17
SetLineColor(CL_BLUE);
SetLineStyle(PS_SOLID,1);
Line(x[0],y[0],x[2],y[2]);

SetLineColor(CL_BLUE);
SetLineStyle(PS_SOLID,1);
Line(x[0],y[0],x[3],y[3]);

SetLineColor(CL_BLUE);
SetLineStyle(PS_SOLID,1);
Line(x[1],y[1],x[3],y[3]);

SetLineColor(CL_BLUE);
SetLineStyle(PS_SOLID,1);
Line(x[1],y[1],x[4],y[4]);

SetLineColor(CL_BLUE);
SetLineStyle(PS_SOLID,1);
Line(x[2],y[2],x[4],y[4]);
}
間違ってるとこありましたら、ご指摘お願いします。

834 名前:デフォルトの名無しさん :03/05/08 17:18
エラーメッセージ読め

835 名前:デフォルトの名無しさん :03/05/08 17:24
>>834
エラーメッセージがでないんです。
前はでていたんですが、1回アンインストールして最近もっかいインストールしたら
でなくなってました。


836 名前:デフォルトの名無しさん :03/05/08 17:24
エラーメッセージが出ないのになんでエラーだって分かるの?

837 名前:デフォルトの名無しさん :03/05/08 17:28
エラー 1
とはでるからです・・。

838 名前:デフォルトの名無しさん :03/05/08 17:41
>>837
もう一度インストール
もちろんフルインストールで

839 名前:デフォルトの名無しさん :03/05/08 17:43
>>838
了解っす!


840 名前:デフォルトの名無しさん :03/05/08 18:11
こっこはー! C++ っのー! 相談室だー!
C はスレ違い。

まぁ一応反応しておくと、
int と float と double を混合させて計算するのはどうかと。
精度が違う云々で警告が出ると思う。
i 以外は全部 double に汁。
まぁ、それ以外特に変なとこないと思う。
igraph.h の関数の仕様は分からんが。

前は igraph.h 用のライブラリがないとか、
そういう変な事やっとたんやないかな?

>>838
エラー出なくなったのに、なぜもう一度インストールする必要があるよ。
どうせ前足りなかったものが今回のインストールで入った、ってだけやろ?
まぁ、フルインストールにするに越した事はないけどさ。

841 名前:840 :03/05/08 18:13
>>838
あ、間違えた。
出なくなったのはエラーじゃなくて
エラーメッセージだったのね。
そら再インストやわ。
すまん。

842 名前:デフォルトの名無しさん :03/05/08 18:56
>>840-841
スレ違いすみません。どのスレに書けばいいか分からなかったので^^;

再インストしたんですが、JINT35.DLL、VBAR332.DLL、MSXBSE35.DLLというファイルが開くことができませんでしたとでました。
無視するとそのままインストールできるんですが、最後にシンボルファイルをセットアップするようにとでてきます。
それをセットアップしないとデバッカは呼び出し関数のコンテキストを決定できませんと・・。
セットアップするアイコンをクリックしてセットアップしようと思ったんですが
このマシン上の対応するdllファイルとマッチしませんとでて、
最後にすべてのシンボルファイルはシステム上へ正しくインストールされませんとでます・・。

スレ違いな上に長文でもうしわけないですが、どうすればいいでしょうか。

843 名前:デフォルトの名無しさん :03/05/08 19:17
>>842
VCなんだからVCのスレ行ったら

844 名前:デフォルトの名無しさん :03/05/08 19:32
>>843
すみませんそうします^^;
みなさんありがとうございました。

845 名前:デフォルトの名無しさん :03/05/08 20:00
C++でファイルロックなんかのいい資料ない?

846 名前:デフオルトの名無しさん :03/05/08 23:42
>>845
http://www.google.com/search?hl=ja&lr=lang_ja&q=%83%8D%83b%83N%83%7D%83%93

847 名前:デフオルトの名無しさん :03/05/08 23:51
>>832
     *  *  *
  *         *
 *   Λ_Λ    *
 *   ( ´ρ` )    *
 *  } ガタリナイヨ  *
  *         *
    *  *  *

848 名前:デフォルトの名無しさん :03/05/08 23:56
>>847
>>832-833

849 名前:デフォルトの名無しさん :03/05/09 00:32
>>847
プ

850 名前:デフォルトの名無しさん :03/05/09 01:07
生まれて初めてプログラム書きましたが、エラーがでました・・。
どこが悪いのでしょうか??


#include <iostream>
#include <string>
using namespace std;


int main()
{

string sei;

cout << " 貴方は男性ですか、女性ですか?: 男性ならM、女性ならFと押してください:" ;
cin >> sei;

if(sei == M)
{
cout << " 貴方は男性ですね:" ;
}

else if(sei == F)
{
cout << " 貴方は女性ですね:" ;
}

}

851 名前:デフォルトの名無しさん :03/05/09 01:08
>>850
MとFはどこで定義しているのでしょうか。


852 名前:デフォルトの名無しさん :03/05/09 01:10
"M"と"F"に

853 名前:デフォルトの名無しさん :03/05/09 01:14
どんなエラーだったの?

854 名前:デフォルトの名無しさん :03/05/09 01:16
あ、
string M;
string F;
と入れれば良いんですかね・・
やってみます

855 名前:850 :03/05/09 01:17
>>853
たぶん、定義ができてなかったみたいです。

856 名前:デフォルトの名無しさん :03/05/09 01:17
>>854
#define M "M"
#define F "F"

857 名前:デフォルトの名無しさん :03/05/09 01:18
>>855
ずいぶんアバウトなコンパイラだな。

858 名前:名無し :03/05/09 01:21
>>857
wara

859 名前:デフォルトの名無しさん :03/05/09 01:22
>>837のような状態になっているんだと思われ。

860 名前:850 :03/05/09 01:26
>>856
有り難うございます!お陰様で思うような動作をしてくれました(TOT)!!
初めてのプログラムなので、感激です・・

みなさん、どうもでした!

861 名前:デフォルトの名無しさん :03/05/09 01:27
初めてのプログラムはHello worldだろ!
本気で怒るよ?

862 名前:デフォルトの名無しさん :03/05/09 01:28
リナックスのgccだと
main()
だけでもエラーメッセージが出ないのに
ウィンドウズのbccだと
main()
じゃエラーが出ます。
void main(void)
って書けばエラーが一応出ないのですが
リナックスのソースにも一応
void main(void)
って書いた方が良いのですか?

863 名前:850 :03/05/09 01:29
>>861
ど、どうしてですか(^^; ?

実は自分、>>764ですが、まだまだ先ははてしなく長いです(笑)

864 名前:デフォルトの名無しさん :03/05/09 01:30
>>862
エラーじゃなくて警告では。
最後にreturn 0;

うーん・・C++ならreturn 0は省略できるはずだけど。


865 名前:デフォルトの名無しさん :03/05/09 01:30
>>860
C++ なら、マクロ使うよりは
const char Male[] = "M";
const char Female[] = "F";
もしくは
const string Male("M");
const string Female("F");
にして Male, Female を使う事を推奨。

M, F じゃ訳分からんのでついでに名前も変えた。

866 名前:デフォルトの名無しさん :03/05/09 01:31
>>863
本気でやっているなら、>>856は参考にしちゃいけません。

867 名前:デフォルトの名無しさん :03/05/09 01:33
>>862
main() は void main() ではなく int main() の略でフ。

>>864
VC6 でもエラーが出た気がする。
うろ覚え。
.NET でやっと main(), return 0 省略が通るようになった。

868 名前:850 :03/05/09 01:34
>>865
なるほど、勉強になりますm(__)m

>>866
どうしてなのですか?

869 名前:デフォルトの名無しさん :03/05/09 01:35
>>864
あっ、そうです。警告でした。
一応どっちでも
main()
でコンパイルは出来てますが、警告されると気分が悪いのです。
bccでは最後に return 0;
と入れれば警告は出ないのか試してみます。
ありがとうございまいた。

870 名前:デフォルトの名無しさん :03/05/09 01:37
>>869
関数の戻り値の型を省略するとint型と見なされる。


871 名前:デフォルトの名無しさん :03/05/09 01:39
>>868
ttp://www.parashift.com/c++-faq-lite/newbie.html#faq-29.8

872 名前:デフォルトの名無しさん :03/05/09 01:40
>>870
それは C 。
C++ は main とコンストラクタ、デストラクタ、
キャスト演算子以外は戻り値の型を書かなければならない。

873 名前:デフォルトの名無しさん :03/05/09 01:41
>>872
そうだったの?

874 名前:850 :03/05/09 01:42
>>871
もしかしてC++って英語必須なのですか(^^;;; ?

875 名前:デフォルトの名無しさん :03/05/09 01:43
むしろプログラミングは英語必須。

876 名前:デフォルトの名無しさん :03/05/09 01:45
プログラムに限らず英語必須

877 名前:デフォルトの名無しさん :03/05/09 01:45
でも条件付きコンパイルには必須だから、#defineは悪ってほどでもないよね。

878 名前:850 :03/05/09 01:45
>>875
マジッスカ!!
これは思っていたよりハードル高いみたいで・・(;;

879 名前:g++ -ansi -pedantic -Wall :03/05/09 01:46
>>872:2: warning: ISO C++ forbids declaration of `main' with no type

880 名前:デフォルトの名無しさん :03/05/09 01:47
> main() must return int. Not void, not bool, not float. int. Just int, nothing but int, only int.
ワロタ。
くどすぎ。

881 名前:デフォルトの名無しさん :03/05/09 01:47
条件付コンパイル以外の用途は悪

882 名前:デフォルトの名無しさん :03/05/09 01:47
>>862ですが

main()

 return 0;
}

でbccでは警告が出なくなりました。
気分が良くなりました。
だからもう寝ます。ありがとう。

883 名前:デフォルトの名無しさん :03/05/09 01:47
>>880
ワラタ

884 名前:デフォルトの名無しさん :03/05/09 01:47
>>880
ワラタ

885 名前:デフォルトの名無しさん :03/05/09 01:48
>>882
intつけようぜ。たったの四文字(空白いれて)だぜ。

886 名前:デフォルトの名無しさん :03/05/09 01:53
意表を付いて

float main()

 return 0.0;
}

とかじゃ駄目?

887 名前:デフォルトの名無しさん :03/05/09 01:55
>>880って日本語で書いてあってもおもしろいのかなぁ。

888 名前:デフォルトの名無しさん :03/05/09 01:58
やっと>>880の英語読めました。

とにかく
int main()
じゃなきゃ駄目なんですね。

889 名前:デフォルトの名無しさん :03/05/09 01:58
mainの返り値はintなんだよvoidじゃねぇーんだよboolでもねぇんだよ
もちろんfloatでもねぇッ!intだよint以外ありえねーんだよぅ

890 名前:デフォルトの名無しさん :03/05/09 02:01
main の返り値は int です。
void でも bool でも float でもなく、int です。
絶対 int です。int 以外だめです。int しかだめです。

891 名前:デフォルトの名無しさん :03/05/09 02:01
そういうことですな

892 名前:デフォルトの名無しさん :03/05/09 02:03
いや、日本語訳はわかるんだけど、それを面白く感じられるのかなぁと思って。

893 名前:デフォルトの名無しさん :03/05/09 02:04
面白い、あげるよ

894 名前:デフォルトの名無しさん :03/05/09 02:09
/*
  この関数は、とにかくint型を返すんや!
  キャストして他の型で受ける事もできるんやけど、
  そんな事したらあかん!
  そんな事するヤツはヘタレや!ヨゴレや!
  男やったら、意地でもintで受けんかい!
*/
http://pc2.2ch.net/test/read.cgi/tech/1030169922/23

895 名前:デフォルトの名無しさん :03/05/09 02:12
なんかこう、jojo風に訳せないものか
「山吹色のオーヴァードライブintッ!!」とか

896 名前:デフォルトの名無しさん :03/05/09 02:14
int int int int int int int int int int int int int int int
int int int int int int int int int int int int int int int
int int int int int int int int int int int int int int int
int int int int int int int int int int int int int int int
int int int int int int int int int int int int int int int
int int int int int int int int int int int int int int int
int main!!!

やれやれだぜ......。

897 名前:デフォルトの名無しさん :03/05/09 02:23
void main()で問題が出た事は無い。
しかし、アフォな後輩がウザイのでしかたなくint main()にしている。
趣味のプログラムは全部void main()
この前それをもっていったらウザイ後輩が口出してきたが。

898 名前:デフォルトの名無しさん :03/05/09 02:24
unix でプログラミングしたことないの?

899 名前:デフォルトの名無しさん :03/05/09 02:25
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp
M$ は main 変えるの好きだな。

DWORD main(int argc, char *argv[])
VOID main(VOID)


900 名前:デフォルトの名無しさん :03/05/09 02:25
C++だもん

901 名前:デフォルトの名無しさん :03/05/09 02:29
http://www.catnet.ne.jp/kouno/c_faq/c11.html
11.14に目を通しておきなよ

902 名前:デフォルトの名無しさん :03/05/09 03:17
得意げな顔をして何が「void main()」だ。void といいたいだけちゃうんか。


903 名前:Kusakabe Youichi :03/05/09 10:07
呼びました? : )

904 名前:デフォルトの名無しさん :03/05/09 15:15
template の質問ですが

template <class T> class CC
template <typename T> class CC

class と typenameの違い教えてください。




905 名前:デフォルトの名無しさん :03/05/09 15:59
>>904
テンプレートの宣言での意味は同じ、というかどっちでもいいかと。
typenameはむしろ、テンプレートの中で明示的に型名だと指示するために使う方が多いと思うけど。

906 名前:デフォルトの名無しさん :03/05/09 19:44
>>904
どっちでも同じだけど、
ここにはクラス以外の型も入れることがあるので
class よりは typename の方が意味的に好み。
class って書いてても int とか入れれはするんやけど、
何か気持ち悪い。

907 名前:デフォルトの名無しさん :03/05/09 19:50
古い規格のころからつかってたから classをつかってたけど、
あるときtypenameってのがあるんだって気がついてからtypename
だけにスタイルを変えた。

でも、明示的に使い分けるのが、一番よさそうだね。

908 名前:デフォルトの名無しさん :03/05/09 20:28
>>880
声出してワラタ

909 名前:デフォルトの名無しさん :03/05/09 20:30
>>897
そいつはウザイ奴かもしれないが
アフォなのは確実にお前だ。

910 名前:デフォルトの名無しさん :03/05/09 20:37
mainの戻り値の問題は、以前かなり荒れたような気がするが。

911 名前:デフォルトの名無しさん :03/05/09 20:45
return 0; って C++ から正式に略せるようになったんだっけ?
ならもう void main の価値は完全に無くなったね。
だって、int main よりも 1 文字も多いんだよ!

912 名前:デフォルトの名無しさん :03/05/09 23:04
>>897
g++はvoid main()だと怒られてコンパイル通らないよ。

913 名前:デフォルトの名無しさん :03/05/10 07:49
C++で参照カウントを用いるタイプのスマートポインタを使いたいと思っています。
で、自作してもいいんでしょうが、もしパブリックドメインなライブラリがあれば
それを使いたいと思ってます。
Windowsに依存しないものがいいんですが、デファクトスタンダードになっている
ような有名なライブラリってあるのでしょうか。。。

914 名前:デフォルトの名無しさん :03/05/10 08:06
>>913
ttp://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%22C%2B%2B%22+%E5%8F%82%E7%85%A7%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88+%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF

915 名前:デフォルトの名無しさん :03/05/10 08:25
昔のプログラムをコンパイルして実行したら、止まるべきところで止まらなくなっていました。
よく見ると、<iostream>では、バッファに何か残っていると、getch()で止まらないようです。
考えてみると、それもそうなのですが、みなさんどうしてるのでしょうか?
つまり、プログラム途中で「進めるにはキーを押してください」として止めるには
どうすればよいのでしょうか。

916 名前:大黒学 :03/05/10 08:55
C++課外授業のアルファテストのお願い

新北野一丁目の大黒と申します。現在、「C++課外授業」と題する、
プログラミング言語としてC++を使用してプログラムの書き方につい
て解説する文章のアルファ版をHTTPで公開しております(データの形
式はLaTeXのソースです)。この文章を、間違った記述がなくてしか
も理解しやすいものにするために、できるだけ多くの人に読んでいた
だいて、ご意見、ご感想、誤りの指摘などを頂戴したいと思っており
ます。なにとぞよろしくお願い申し上げます。

C++課外授業version alpha39
http://www.gin.or.jp/users/daikoku/cpp/cjugyou.tex

前バージョンからのおもな変更点
* 第16章「配列」に、第16.1節「配列の基礎」を追加しました。


917 名前:デフォルトの名無しさん :03/05/10 09:26
読みたいけど、TeX 入れてないからパス...、っていう奴は多いと思う。

918 名前:デフォルトの名無しさん :03/05/10 09:42
dviかpsかpdfにしてくれれば読むよ。
TeXのソースは人に見せるもんじゃないってことをわかってください。


919 名前:デフォルトの名無しさん :03/05/10 09:48
>>917



920 名前:デフォルトの名無しさん :03/05/10 10:32
>>916
PDF版はこれ?
http://www.gin.or.jp/users/daikoku/cpp/cjugyou.pdf

921 名前:デフォルトの名無しさん :03/05/10 11:16
C++標準文字列は何を使えば良いでしょう?

組み込みコンパイラ、VC++、BCBの全てで使えるヤシ。

922 名前:デフォルトの名無しさん :03/05/10 11:20
>>921
std::string と言いたいところだが

>組み込みコンパイラ

char* でも使っとけ

923 名前:921 :03/05/10 11:24
thanx!>>922
実はBCBでふつーにstring使ってたのに、
MFCで使えないからstringって標準じゃないと勘違いしちゃった。
試しにMFCでstd::string使ってみるYO!

924 名前:デフォルトの名無しさん :03/05/10 11:58
C++を使うにしても、継承とか多態性とか使わなくても、
単純にデータや手続きのカプセル化とか、
コーディングをすっきりまとめやすいっていう安易な考えで
C++使うのはありでしょうか?

925 名前:デフォルトの名無しさん :03/05/10 12:00
アンチパターンに陥らないように気をつけな。

926 名前:デフォルトの名無しさん :03/05/10 12:47
ttp://www.gin.or.jp/users/daikoku/cpp/
にあるpdfでいいの?
よくわからんけど。

927 名前:デフォルトの名無しさん :03/05/10 12:49
ありだよ

928 名前:デフォルトの名無しさん :03/05/10 12:58
順子、修作、桐絵、光雅って、誰ってのはおいといて切り口は悪くないと思う。

各章のはじめに、ここで何を説明しようとしてるのか、どのような目標があるのかを
書いておくと、読みやすくなるよ。
そこらの教科書と同じね。

内容の正確性は、まだ読んでないからわからない。
でもちょっと怪しい気もする。

929 名前:921 :03/05/10 13:04
引数の省略とかしたくて、

func(std::string sout1, std::string sout2, std::string sout3) {
if (sout1 != NULL) sout1 = ""; //代入
if (sout2 != NULL) sout2 = ""; //代入
if (sout3 != NULL) sout3 = ""; //代入
}
って、やりたいんですが、エラーです。
C++の演算子のオーバーロードの弊害でつか。どうしよう。

930 名前:デフォルトの名無しさん :03/05/10 13:09
>>929
引数の省略がやりたいんなら、素直に↓ってやっとけ。
func(std::string sout1="", std::string sout2="", std::string sout3="");

931 名前:デフォルトの名無しさん :03/05/10 13:11
何でNULLと比較してるの?
何でNULLと比較してるの?
何でNULLと比較してるの?

少なくとも300ページ以上の本を探して索引で「デフォルト引数」のとこを
探して読んでみなさい。


932 名前:921 :03/05/10 13:19
>>930-931

>func(std::string sout1="", std::string sout2="", std::string sout3="");
この場合って、関数内で、sout1に代入してもメモリ破壊されませんか?

933 名前:デフォルトの名無しさん :03/05/10 13:23
func(char *sout = "", ...)

みたいな引数だったら、かなりの確率で問題が発生する。
君の心配しているように未定義の動作になる。

std::string sout = "" なら平気。
stringは代入演算子で渡された文字列のポインタを保存するわけじゃなくて、
そのつど専用の領域を必要なサイズで確保して、そのコピーをもつ
仕組みになってるから。

soutって名前からして、結果を格納するつもりなんだろうけど
それなら
std::string &sout で受け取るべきじゃないのか?

934 名前:921 :03/05/10 13:46
>std::string &sout で受け取るべきじゃないのか?
うわ、その通りでした。

今まで、AnsiStringばかりを使ってたつけが...

intを文字列にしてstringに渡す方法が分からないでつ。

935 名前:デフォルトの名無しさん :03/05/10 13:54
string hoge(IntToString(value).c_str);

936 名前:デフォルトの名無しさん :03/05/10 14:40
int n;
std::stringstream ss;
std::string s;

ss << n;
s = ss.str();

もしくは

int n;
char buf[100];
std::string s;
sprintf(buf, "%d", n);
s = buf;

もしくは

int n;
std::vector<char> buf(100);
std::string s;
sprintf(&buf[0], "%d", n);
s = &buf[0];

いんすこ大変だけどboostを使えば簡単
ttp://www.kmonos.net/alang/boost/classes/lexical_cast.html


937 名前:921 :03/05/10 16:20
int n;
>std::stringstream ss;
>std::string s;
>ss << n;
>s = ss.str();

こちらがC++っぽいんですが、何か行数多いですね。
atoiの逆のitoaが無い問題がC++でも解決してないような...

938 名前:デフォルトの名無しさん :03/05/10 16:49
>>937
あほか。 行数が多くて嫌なら関数にでもしろよ。

>atoiの逆のitoaが無い問題がC++でも解決してないような...
この行は訳がわからん。 解決してるだろ?

939 名前:デフォルトの名無しさん :03/05/10 17:36
#include <xxx>
xxxのところに、string.hを指定すると、string.hファイルが挿入されますよね。
では、stringを指定すると、string名前空間の定義が挿入されるのでしょうか?
どなたか教えてくださいませ。

940 名前:デフォルトの名無しさん :03/05/10 17:41
>>939
#include <string>するとC++のstringヘッダが読み込まれます。
#include <cstring>するとstd名前空間内にstring.hが読み込まれます。

941 名前:デフォルトの名無しさん :03/05/10 17:49
xxxstreamは想像以上に遅いので、
何度も呼び出すようなら素直にsprintfを使え

942 名前:デフォルトの名無しさん :03/05/10 17:51
>>941
実装次第です。あなたの環境が全ての人の環境というわけではありません。

943 名前:デフォルトの名無しさん :03/05/10 17:55
うへへ、そうだね。
sprintfの方がより遅い実装になってるとも限らないからね。
見たことないけどね。
iosの実装が甘いサブセットなstlならそうかもね。


944 名前:939 :03/05/10 18:06
>>940
即レスサンクスです。
よく分かりました。ありがとうございました。

945 名前:デフォルトの名無しさん :03/05/10 18:08
STLが使いたいから、と言う理由で
CではなくてC++を選択するのはありでしょうか?


946 名前:デフォルトの名無しさん :03/05/10 18:09
それくらい自分で考えて下さい

947 名前:デフォルトの名無しさん :03/05/10 18:17
意見ぐらい聞かせてくれたってよさげ。


948 名前:デフォルトの名無しさん :03/05/10 18:20
C++に変えることで発生するリスクもあるから、よーく考えてからやれ

949 名前:デフォルトの名無しさん :03/05/10 18:21
>>945
ありです。
あと、より安全な C としても使えます。
たとえば、char * を使わずに std::string を使うとか。


950 名前:デフォルトの名無しさん :03/05/10 18:23
個人でやるなら全然問題ないけど
仕事でやる場合、手直ししないと使えない旧来のコードがあったり
C++やSTLがわからないかわいそうな人がいたりするからよーく考えてからやれ。


951 名前:デフォルトの名無しさん :03/05/10 18:54
みなさんどうもです。C++よさそうですね。
あくまでも開発ツールですから、いいものは積極的に
取り込んでいこうと思います。
かわいそうな人たちは、かわいそうですが、
向上心が無いということでおいていきます。
それが会社の方針なので(w

952 名前:デフォルトの名無しさん :03/05/10 22:03
実数型 float で符号ありのときの最小の絶対値は幾らでしょうか?
環境はリナックスです。
助けて下さい。

953 名前:デフォルトの名無しさん :03/05/10 22:06
0?

954 名前:デフォルトの名無しさん :03/05/10 22:06
リナックスしらんが、サイズを調べりゃいいんでないの?

955 名前:デフォルトの名無しさん :03/05/10 22:07
最大の間違えじゃないかな・・・

956 名前:デフォルトの名無しさん :03/05/10 22:17
>>952
> 実数型 float で符号ありのときの

float が実数型でないとか、符号なしの処理系があるのか ?

それはさておき、0 以外のってことだろうな。

#include <float.h> して、FLT_MIN じゃないかな。

957 名前:952 :03/05/10 22:38
意味が分からない事言っててすみません。
0以外で御願いします。

int zero,mainasu;
float a,b,c;
zero=0,mainasu=(-1);
a=0.01,b=0.0001;
c=(a-b)/a;
if(c<zero){
c=c*mainasu;
}

aもbも更には,cも思い切り小さくしたいのです。
論理的に考えてc<aとc<bのような...

ソースには
#include <stdio.h>
以外入れたくありません。

958 名前:デフォルトの名無しさん :03/05/10 22:40
>>952
絶対値の定義。

|A| = ( A > 0 ) ? A : -A;

よって最小の絶対値は0。
終了

959 名前:958 :03/05/10 22:42
|A| = ( A >= 0 ) ? A : -A;

こうだな。

960 名前:デフォルトの名無しさん :03/05/10 22:48
>>957
> 意味が分からない事言っててすみません。

というより、

> #include <stdio.h>
> 以外入れたくありません。

の方が意味不明。

961 名前:デフォルトの名無しさん :03/05/10 22:50
中卒の予感スレの予感。

962 名前:デフォルトの名無しさん :03/05/10 22:52
>>961
日本語変だYO!

次スレまだ〜???

963 名前:デフォルトの名無しさん :03/05/10 23:04
あと3日でちょうど1ヶ月。

964 名前:952 :03/05/10 23:23
C言語の書き方しか知らないです。
C++の書き方知らないです。
でも使っているのはC++のはずです。

>>957では
aとbの具体的な値を書いてるけどほんとは式で出ます。
a>bにもa<bにもなりえる。そのうちaとbの値が収束する。
aとbの相対誤差を求めてる。相対誤差は絶対値
cは相対誤差でそれを収束の条件にする。
相対誤差をとにかく小さくしたい。

while(c<0,0)

なんて書いたらいつまで経っても計算が終わらないので困っているのです。
#include <stdio.h> 以外は使ったことないのです。

助けて下さい。

965 名前:952 :03/05/10 23:25
>>964
>while(c<0,0) は

while(c<0.0)

の書き間違いです。すみません



966 名前:デフォルトの名無しさん :03/05/10 23:27
while(c<0,0)
while(c<0.0)

0.1bit位間違ってたのかな…

967 名前:デフォルトの名無しさん :03/05/10 23:27
どれだけの相対誤差にしたいかの問題だと思うんだが

968 名前:デフォルトの名無しさん :03/05/10 23:27
>>965
while(c<=0.0)じゃないの?

969 名前:デフォルトの名無しさん :03/05/10 23:32
収束の条件は予め決めとくものだと思うんだけど。
機械の精度ギリギリまでやりたいなら、それでもいいけど
だったら<stdio.h>だけじゃ無理。

970 名前:952 :03/05/10 23:49
>>968
そうでした。ごめんなさい。

定数係数の2階線形微分方程式を解こうとしてます。
俺はアホです。逝ってきます。

971 名前:デフォルトの名無しさん :03/05/10 23:56
じゃあこの話題はおしまいと・・・


972 名前:952 :03/05/11 00:12
本当に申し訳ありませんでした

今確認したところ

while(c<=0.0)

って書いてませんでした。"<="の"="を抜かしてました。
ちゃんと書き直したら収束しました。本当にすみませんでした。

973 名前:デフォルトの名無しさん :03/05/11 00:17
おつかれさま

974 名前:デフォルトの名無しさん :03/05/11 00:18
ポインタをリストで扱って最後にdeleteをかけたいのですが
最後の--iがとても変な感じがしてしまいます。
何かもっと綺麗な上手い書き方はないでしょうか?

for( std::list<CPoint*>::iterator i = m_List.begin(); i != m_List.end(); ++i )
{
 delete (*i);
 i = m_TaskList.erase( i );//この時点で削除したiteratorは無効
 --i;//既に次のiteratorを指しているためforループの++iの為に一つ戻しておく
}

975 名前:デフォルトの名無しさん :03/05/11 00:23
1. 高精度で計算したければ float ではなく double を使う。
2. a が 0 の場合を考慮しなくてはならない。
  収束値が 0 から離れてると予想される場合でも
  収束するまでに運悪く 0 にならないとも限らない。
3. 絶対値は #include <math.h> して fabs を使う。

976 名前:デフォルトの名無しさん :03/05/11 00:23
while(!m_List.empty()){
delete m_List.back();
m_List.pop_back();
}

977 名前:デフォルトの名無しさん :03/05/11 00:26
1:
for( std::list<CPoint*>::iterator i = m_List.begin(); i != m_List.end(); ++i )
 delete (*i);
m_List.clear();

2:
for( std::list<CPoint*>::iterator i = m_List.begin(); i != m_List.end(); i = m_TaskList.erase( i )
)
 delete (*i);

3:
while( !m_List.empty() ) {
 delete (*m_List.begin());
 m_List.pop_front();
}

978 名前:デフォルトの名無しさん :03/05/11 00:27
>>974
++i
しなきゃいいだろ?

979 名前:デフォルトの名無しさん :03/05/11 00:28
>>976
eraseに拘りすぎていました。ありがとうございました。

980 名前:デフォルトの名無しさん :03/05/11 00:30
>>977-978
書き込んでいる間にレスが
こんなに色々な解決方法があるんですね。
++iとかほとんど決まり文句みたいに覚えていたので
とても参考になりました。ありがとうございました。

981 名前:デフォルトの名無しさん :03/05/11 00:31
>>978
センスなし

982 名前:デフォルトの名無しさん :03/05/11 01:42
>>915だけど。
みんななんで答えてくれないんだ。
わからないのか?ガカーリだよ。

983 名前:デフォルトの名無しさん :03/05/11 01:48
std::cin

984 名前:デフォルトの名無しさん :03/05/11 02:49
>>982
DOS なら
while(kbhit()) getch();
とかしてた気がする。
細かいとこ違うかもしれんけど、気にするな。

985 名前:デフォルトの名無しさん :03/05/11 02:51
> みんななんで答えてくれないんだ。
環境依存だから。ってことでよろしいいか?


986 名前:デフォルトの名無しさん :03/05/11 06:14
>>915>>982 scanfやcin等の標準入力とgetch等の直接コンソール入力は相性が
悪いです。>>915のはたぶん標準入力をした後すぐにgetchで止めようとしたと思う。
そうすると、標準入力したものがバッファから消える前にgetchのところに行って
しまう時がある。使うバッファは同じなので。逆にgetchで分岐入力見たいのを
した後、すぐに標準入力があると、getchで入力した文字が入力されている事がある。
止めるならgetcharを使って改行を押してください見たいにやればよいと思います。

987 名前:デフォルトの名無しさん :03/05/11 10:50
delete this;
ってやっていいの?

988 名前:デフォルトの名無しさん :03/05/11 11:05
その後メンバ変数を使ったりしなければ大丈夫。

989 名前:デフォルトの名無しさん :03/05/11 11:07
vc6で以下のコードがコンパイルできません(山のようにエラー)
vectorやstringなんかは使えるのでmapが原因のような気がするけど、
標準で入ってるSTLに付属してますよね?
だれかわかる方いますか
あとgccでは普通にコンパイルできます

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(void){
map <string,string> ma;
ma.insert(pair<string,string>("mona","giko"));
cout << ma["mona"] << endl;
return 0;
}


990 名前:デフォルトの名無しさん :03/05/11 11:12
>>989
エラーメッセージぐらい自分で嫁。

991 名前:デフォルトの名無しさん :03/05/11 11:22
>>987
インスタンスをnew以外で作成するのを禁止できないので、あぶない。

992 名前:989 :03/05/11 11:23
>>990
#pragma warning(disable:4786)
エラーメッセージの識別子が'255'文字・・っていうので検索すると解決しました
すいませんでした



993 名前:デフオルトの名無しさん :03/05/11 11:29
    \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,,  / \〇ノゝ∩ < 1000とり合戦いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
    /三/ | ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \ ぶーぶーぶー /
      //三/|三|\              タリー
      ∪  ∪    (\_/)タリー    タリー   次スレまだ〜?
               (  ´Д)    タリー  タリー
               /   つ  (\_/)   (\_/)ノ⌒ヽ、
              (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))

994 名前:デフォルトの名無しさん :03/05/11 11:34
>>992
おいおい、それはエラーじゃないだろ

995 名前:デフォルトの名無しさん :03/05/11 11:45
>>991
禁止できるし

996 名前:デフォルトの名無しさん :03/05/11 11:50
#include <boost/mpl.hpp>

997 名前:デフォルトの名無しさん :03/05/11 11:50
#include <this>

998 名前:デフォルトの名無しさん :03/05/11 11:50


999 名前:デフォルトの名無しさん :03/05/11 11:51
umee

1000 名前:デフォルトの名無しさん :03/05/11 11:51
D言語に乗り換えます


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