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


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

C++相談室 part14
501 名前:デフォルトの名無しさん :03/01/12 13:39
>>500
自明なことですね。確かにこの場合、直接コールになると「断言」できます。
でなければ、その処理系は"C++"ではありません。

しかしobj.fun()の方は直接コールになるとは「断言できない」ということで、
この件、既に結論は出ていると思います。


502 名前:C++厨 :03/01/12 13:53
ハーブ・サッターまんせー
浜田真理まんせー

まっちくたびれたのはSO-
君がランチ忘れテレビきょときょとー
カラフルな地球眺めてもっとー
憂鬱なんて忘れてとびだそー
ASHITA!
マニアーナ

503 名前:デフォルトの名無しさん :03/01/12 18:35
>>501
> しかしobj.fun()の方は直接コールになるとは「断言できない」
それ以前に「直接コール」「間接コール」が使われるということさえ、
規格には書いてないけどな。

504 名前:デフォルトの名無しさん :03/01/12 20:42
IP取得開始前の過去ログが晒されたら、またその時点で侵害行為発生じゃん。
で、書き込み者が特定できないから云々・・となると思うが・・・。

505 名前:デフォルトの名無しさん :03/01/12 20:50
嘘はついていないんだろうけど…。(;^ ^


506 名前:デフォルトの名無しさん :03/01/12 21:04
CトランスレーターCfrontって今でもありますか?
勉強としてすごくほしいんですが

507 名前::03/01/12 21:44
質問です
PC:A、B、CがあってAがB、Cから二秒おきくらいに4ビットの数字を受け取るように
したいのですが LANとUSB、シリアルとパラレルのどれを使ったほうが良いでしょうか?
ちなみに送信する側のB、Cは重い処理をやってるので早く通信が終った方がいいです。
またプログラミング初心者なので(デルファイでソケット程度の通信しかやった事が無い)
なるべく簡潔なソースで済む方が嬉しいです。
これが分かれば調べるのも捗るのでよろしくお願いします。


508 名前:デフォルトの名無しさん :03/01/12 21:47
UDPかTCPでパケット投げろ。
ソケット使えば簡単だろ。

509 名前::03/01/12 21:53
>>508 レスありがとうございます。やってみます。

510 名前:デフォルトの名無しさん :03/01/12 23:30
>>506
そもそも Cfront ってフリーソフトじゃないし、UNIX System V 向けの
ものしか提供されてないと思ったが。

x86 で動いてかつ C のソースを出力する C++ front-end ってことだと
Comeau C++ Compiler かね。使ったことないけど Web Page 見る限りで
は。

http://www.comeaucomputing.com/

511 名前:デフォルトの名無しさん :03/01/13 00:02
#include <windows.h>#include <cstdio>
#define DATA_AXIS_NUM 2048
int main(){int x,y,z,t; BYTE **pData;
 pData=(BYTE**)new BYTE *[DATA_AXIS_NUM];
 for(y=0;y<DATA_AXIS_NUM;y++) pData[y]=(BYTE*)new BYTE[DATA_AXIS_NUM];

 for(z=y=0;y<DATA_AXIS_NUM;y++)
  {
   for(x=0;x<DATA_AXIS_NUM;x++)
   {
    if(z==0&&z!=x%256)
     t=0;
    if(223<z&&z<230)
     t=0;
    pData[y][x]=(BYTE)z++;
   }
  z=0;
 }

 for(y=0;y<DATA_AXIS_NUM;y++) delete[] pData[y];
 delete[] pData;
 return 0;
}
(BYTE)223辺りから0を返してきますが、メモリ破壊してる?
VC++.NET&WinXP

512 名前:デフォルトの名無しさん :03/01/13 00:32
> (BYTE)223辺りから0を返してきますが、
何を言ってるのかサッパリなのは、俺だけ?

513 名前:デフォルトの名無しさん :03/01/13 00:38
>>512
(BYTE)z++がz=223辺りから255位まで0を返してくるのですが
メモリ破壊のせいでつか?それとも実体の取り方がおかしいでつか?

514 名前:デフォルトの名無しさん :03/01/13 02:37
>>511
宿題スレに行…

515 名前:デフォルトの名無しさん :03/01/13 05:58
g++(3.2)を初めて触ってみてるのですが、
ひょっとして、std::wstringが使えなかったりします?

それと、setのconst_iteratorをtypedefすると、implicit typenameという警告が出ますが
これはどういう意味でしょうか。(bcc32だと素通りするコード)

516 名前:デフォルトの名無しさん :03/01/13 06:41
>511
tはなんのためにあるん?

517 名前:511 :03/01/13 10:55
>>516
tは条件ブレークポイントの為でつ
宿題擦れに言ってきます

518 名前:デフォルトの名無しさん :03/01/13 11:31
>>515
> ひょっとして、std::wstringが使えなかったりします?
gcc スレに行ったほうがよいかも。おそらく、glibc が古くて wchar_t を扱う
関数 (wprintf とか) が未実装のため、configure 時に _GLIBCPP_USE_WCHAR_T が
undef されているんだと思う。

> setのconst_iteratorをtypedefすると、implicit typenameという警告が出ます
set<T>::const_iterator の前に typename を付ける。

519 名前:C++厨 :03/01/13 14:24
credit card ホスィー

520 名前:デフォルトの名無しさん :03/01/13 14:27


521 名前:515 :03/01/13 14:37
>>518
回答ありがとうございます。

typenameは、見事に警告が消えました。
これは、どういう時に必要なのでしょうか。

wstringはよくわからなかったので(該当しそうなのをdefineしても駄目)、
また必要になった時にgccスレで聞いてみます。

522 名前:デフォルトの名無しさん :03/01/13 14:50
>>521
テンプレートクラス内の識別子を、型名から探すようにコンパイラーに指令を出すのです。
↓こんなクサレコードを想像しる。
struct X
{
  struct const_iterator {};
  struct const_iterator const_iterator;
};


523 名前:デフォルトの名無しさん :03/01/13 15:02
>>521
gcc スレより、その OS のスレで聞いた方が良いかもしれん。

524 名前:デフォルトの名無しさん :03/01/13 16:07
仮想関数&純粋仮想関数のメリットとデメリットを教えて〜

525 名前:デフォルトの名無しさん :03/01/13 16:23
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://freeweb2.kakiko.com/mona/

526 名前:デフォルトの名無しさん :03/01/13 16:23
>>524
polymorphism(ポリモーフィズム)と仮想関数でググってみな。


527 名前:515 :03/01/13 16:35
>>522
え?え?え?
最初のが構造体で、次が変数で…
でも同じスコープで同じ名前なので識別子の多重定義エラーでは?
????

528 名前:デフォルトの名無しさん :03/01/13 17:11
>>527
構造体と変数の名前は、別個に管理されてる。重複しても問題ないぞ。

(試せ)

529 名前:山崎渉 :03/01/13 18:24
(^^)

530 名前:デフォルトの名無しさん :03/01/13 21:17
文字列の中のある文字(たとえばABC)とかを検索して、それが見つかったら何かを返す関数とかってないですか?

531 名前:デフォルトの名無しさん :03/01/13 21:20
>>530
strtok()

532 名前:デフォルトの名無しさん :03/01/13 21:40
>>531
ありがとです。

533 名前:デフォルトの名無しさん :03/01/13 21:45
strchr
strstr

534 名前:デフォルトの名無しさん :03/01/13 22:09
ファイルのサイズを返す関数ってありますでしょうか?

535 名前:デフォルトの名無しさん :03/01/13 22:23
>>534
OS依存だが
unix系、MS系どちらもstat()/fstat()が使える
MS系ならio.hの_filelength()というのもある

536 名前:デフォルトの名無しさん :03/01/13 22:27
>>535
win98で使えるのは何か無いでしょうか?

537 名前:デフォルトの名無しさん :03/01/13 22:33
win98はMSの製品です

538 名前:デフォルトの名無しさん :03/01/13 22:42
>>536
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vclrfIHttpFileGetFileSize.asp
って,そのまんまの関数名やん

539 名前:デフォルトの名無しさん :03/01/13 22:45
>>537
そうでしたか。すみません。
long _filelength( int handle );
handolって何ですか?
ターゲット ファイルのハンドルって書いてありますが、
何なのでしょう?



540 名前:538 :03/01/13 22:45
わり,URL張り間違い
ttp://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_getfilesize.asp?frame=true
鬱駄氏脳

541 名前:デフォルトの名無しさん :03/01/13 22:50
>>539
OSに近い、ファイルへのローレベルなアクセス用ハンドル。
unixでいう0がstdin, 1がstdout, 2がstderrってのとほぼ同じ。

FILE* fp = fopen("fairu ne-mu", "r");
int handoru = _fileno(fp);
long saizu = _filelength(handoru);

542 名前:デフォルトの名無しさん :03/01/13 22:56
>>541
どうでもいいがハンドルの綴りは handle で頼む。

543 名前:デフォルトの名無しさん :03/01/13 23:01
>>541
ありがとうございます。
後、聞きたいことが・・・。
ファイルを読み込んだときのデータへのポインタは
どうしたら得られますか?

544 名前:デフォルトの名無しさん :03/01/13 23:20
>>530
strpbrk()

545 名前:デフォルトの名無しさん :03/01/13 23:21
>>530
ゴメソ
strstr()

546 名前:デフォルトの名無しさん :03/01/14 00:26
現在VCで開発しています。

グローバルで
CFileControl cfc();
と宣言し、
cfc.FileOpen("ReadMe.txt");
sFRead=(char*)cfc.FileRead(4);
cfc.FileClose();
といった形でクラスのメンバ関数を使っているのですが、
error C2228: '.FileOpen' : 左側がクラス、構造体、共用体ではありません。
というエラーが出ます。
この原因はどういったことが考えられるんでしょうか?
御教授お願いします。

547 名前:デフォルトの名無しさん :03/01/14 00:30
>>546
CFileControl cfc(); ←このカッコをつけた事で、cfcの関数プロトタイプ宣言
だとみなされれてるんじゃない?カッコ取ったらどうでしたか?

548 名前:デフォルトの名無しさん :03/01/14 00:30
× CFileControl cfc();
 CFileControl クラスのインスタンスを返す cfc という名前の関数
○ CFileControl cfc();
 CFileControl クラスの変数 cfc をデフォルトコンストラクタで初期化

549 名前:548 :03/01/14 00:30
かぶつた。。。

550 名前:デフォルトの名無しさん :03/01/14 00:31
>>546 ()

551 名前:548 :03/01/14 00:31
× ○ CFileControl cfc();
○ ○ CFileControl cfc;
しかも間違えてるし、俺。。。

552 名前:546 :03/01/14 00:31
>>547さん ありがとうございます。

その通りでした。
お騒がせしました。

553 名前:デフォルトの名無しさん :03/01/14 00:32
いっぱいかぶったね、釣り師ならかなりの釣り吉だね。

554 名前:C++厨 :03/01/14 12:18
>>530
string::find(〜);

とかは

555 名前:デフォルトの名無しさん :03/01/14 12:50
それはメソッド。

556 名前:C++厨 :03/01/14 12:54
Σ(´∀`lll)

そうか…
functionを聞いてたのか…

557 名前:デフォルトの名無しさん :03/01/14 18:08
c++でgetlineを使っているのですがどうもうまく動作してくれません。
MSDNのヘルプを調べたのですが
getline 関数は、次のどれかが起きるまで、
入力ストリームからのすべての文字を含む文字列を作成します。
- EOF (end of file)。
- 区切り記号を検出した。
- is.max_str() 個の要素を抽出した。
と書いてありました。
ここでいう区切り記号というのは何のことでしょうか?
文字列内のタブなども含まれるのでしょうか?
ご回答よろしくお願いします。

558 名前:デフォルトの名無しさん :03/01/14 19:53
ファイルからデータを指定のバッファに読み込むプログラムを
作ったのですが読み込まれません。
どこがおかしいのでしょうか?
よろしくお願いします。
void main()
{
FILE *fin;
int i;
fin = fopen("right.jpg","rb");
// ファイルサイズの取得
int dwSize = 0;
while (fgetc(fin) != -1)
dwSize ++;
printf("ファイルサイズ=%d\n", dwSize);
// データの格納領域の取得
char *pFileBuf = new char[dwSize];
// ファイル構造体の最初のアドレス
pFileBuf = fin->_base;
fread(pFileBuf, dwSize, 1, fin);
}



559 名前:デフォルトの名無しさん :03/01/14 20:19
>>558
fgetc()で全部読んでるからだよ。

560 名前:デフォルトの名無しさん :03/01/14 20:21
>>559
dwSize++の前ってことですか?
読み込んだ場所のところからは値が無くなるってことですか?

561 名前:558 :03/01/14 20:39
改良したら読み込めました。
ありがとうございました

562 名前:デフォルトの名無しさん :03/01/14 21:06
#include< iostream.h>
main()
{ int num;
do{
while(cin>> num)
{
}
}while(cin >> num);
return0;
}

繰り返しが行われません、理由を教えていただけませんか、入門者ですレベルが低くてすいません





563 名前:デフォルトの名無しさん :03/01/14 21:06
>>558 void main()と書くは氏ね。int main()と書け

564 名前:デフォルトの名無しさん :03/01/14 21:24
>>563
まったくよー
//が書けるようになって喜んでいる自称C++使いと同レベルだな
色んなスレで馬鹿の一つ覚えを繰り返している能無しこそ早く氏ね

565 名前:デフォルトの名無しさん :03/01/14 21:30
つーかさ、>>563はnewを使っている点以外はCの範疇じゃん。
newをmallocに書き直してCスレに逝け。

566 名前:デフォルトの名無しさん :03/01/14 21:31
まちごた >>558に対するレスです。
>>563さんゴメソ。

567 名前:デフォルトの名無しさん :03/01/14 21:31
>>557
区切り記号とは改行コードのこと。引数で指定することもできる。

568 名前:デフォルトの名無しさん :03/01/14 21:40
>>562
入力に数値以外を与えてない?

569 名前:デフォルトの名無しさん :03/01/14 21:49
>>568
do-while文が勝手に値が入力されて終わってしまいます

570 名前:デフォルトの名無しさん :03/01/14 21:55
void foo(void){
int a;
}
のaに直接アクセスする方法ないですか?

571 名前:デフォルトの名無しさん :03/01/14 22:06
>>570
多分無理だろうな,aは実行環境に存在しないから

572 名前:債務不履行の名無しさん :03/01/14 22:06
>>570


573 名前:デフォルトの名無しさん :03/01/14 22:08
ローカル変数に外からアクセスしたいって事だろう。無理だけど。

574 名前:デフォルトの名無しさん :03/01/14 22:10
いや、例えば
template<typename T>struct X{
tyoedef T type;
};
template<typename T>void foo(T t){
X<T> tx;
}
となっていれば、変数を渡して型を摂れるかなと思いまして。
やっぱムリですね。

575 名前:デフォルトの名無しさん :03/01/14 22:14
>>574
bind1stのようなことか?

576 名前:デフォルトの名無しさん :03/01/14 22:18
>bind1stのようなことか?

すいません。初心者なのでわからないです。
が、もし>>574のようになっていたら、
main(){
int a;
foo(a)A=10;//あるいはtxに直にアクセスできるとしたら、tx::typeとか
}
という実行時に型を生成できるかなと思いまして。

577 名前:デフォルトの名無しさん :03/01/14 22:30
>>576
すると,こんなことか?
struct object
{
virtual object* create() const = 0;
};
template<typename T>struct X : object
{
virtual object* create() const
{
return new X<T>();
}
};
main()
{
X<int> a;
object* p = a.create();
X<int>* px = dynamic_cast<X<int>*>(p);
}

578 名前:デフォルトの名無しさん :03/01/14 23:30
この時間に見てらっしゃる方>> 562を看ていただけませんでしょうか

579 名前:デフォルトの名無しさん :03/01/14 23:37
>>578
「cin >> num」 は num じゃなくて cin を返すわけだ。
あとはわかるだろ?

580 名前:デフォルトの名無しさん :03/01/14 23:39
>>578
std::cin >> num はEOFもしくはエラーを検出したらfalseを返す。
それを念頭においておけば簡単。

581 名前:デフォルトの名無しさん :03/01/14 23:40
template<typename T>void typeof(T t){
typedef T TYPE;
}
このTYPEにアクセスできたら・・・

582 名前:デフォルトの名無しさん :03/01/14 23:42
>>562
・コンパイラは何なのかは必ず書けい。
・#include< iostream.h> よりは
  #include <iostream>
  using namespace std;
 にしておこう。
・↑と、return0; を return 0; に直したら VC++7 と bcc5.51 と gcc3.2 では
 何回数字を入力しても終わらないようにちゃんとなったが。

>>579
cin はエラーが発生してなければtrue扱いになるように
キャスト演算子が定義されてるわけだが。

583 名前:デフォルトの名無しさん :03/01/14 23:42
>>581
引数とTYPEに結合がなく戻りがvoidじゃ無理だろうな

584 名前:デフォルトの名無しさん :03/01/14 23:49
object* dup(object* org)
{
if(mona* p = dynamic_cast<mona*>(org))
{
return p->create();
}
else if(giko* p = dynamic_cast<giko*>(org))
{
return p->create();
}
else if(zonu* p = dynamic_cast<zonu*>(org))
{
return p->create();
}
else if(baya* p = dynamic_cast<baya*>(org))
{
/*
  ■■ ■■ ■ ■ ■■
  ■■ ■■ ■ ■ ■■■■■■■■
 ■■ ■■ ■■■■■■■■
■■ ■■ ■■■■■■ ■■ ■■
■■ ■■ ■■■■■■ ■■ ■■
■■ ■■ ■■ ■■
*/
return p->create();
}
else
{
return 0;
}
}

585 名前:デフォルトの名無しさん :03/01/14 23:56
>>578
マルチがうざいので答えもマルチしてやる。

C++のストリームは一度eofbitが立ってしまうと、明示的にクリアしてやらないと
元に戻らない。下のプログラムのようにしたらどうか。

#include <iostream>
int main()
{
int num;
do {
while (std::cin >> num)
{
}
std::cin.clear();
} while (std::cin >> num);
}

586 名前:579 :03/01/14 23:56
>>582
漏れが何か間違った事書いたかい?
operator>> が bool を返すとか言わないよな?

587 名前:デフォルトの名無しさん :03/01/14 23:57
寝るぞ

588 名前:デフォルトの名無しさん :03/01/15 00:02
>>586
operator>>をcinの文脈で使えばcinが返るが、ブール式中で使うと
operator *() が適用されてtrueかfalseを返す。
ソース:C++標準ライブラリ、P573、§13.4.3

589 名前:デフォルトの名無しさん :03/01/15 00:07
スマソ。operator ()ね。
operator *()なんてのは無い。

590 名前:デフォルトの名無しさん :03/01/15 00:07
>>588
>>operator *()
ヴォケ

591 名前:デフォルトの名無しさん :03/01/15 00:07
>>585
見せて頂きました、おなじかたなのでしょうか、こちらでは見てのとおりの対応を受けております…
返答を頂、うれしかったです

592 名前:デフォルトの名無しさん :03/01/15 00:08
>>589
>operator ()
ヴォケ
double faultぢゃstupid!

593 名前:デフォルトの名無しさん :03/01/15 00:13
>>592
あの・・・・・そしたら、C++標準ライブラリP573、§13.4.3に書いてある事は
デタラメって事でしょうか?真面目に質問します。

594 名前:582 :03/01/15 00:17
>>588
operator void* () ではなかったっけか。

>>593
その本読んだことはないが、 本当に operator() と書いてあるなら
誤植か何か。 if( cin ) ... とは書けても if( cin() ) は無理っしょ?

595 名前:デフォルトの名無しさん :03/01/15 00:19
>>594
あっその通りです!operator void* ()と書いてあります。
勝手に書き換えてしまってすみません。

596 名前:デフォルトの名無しさん :03/01/15 00:23
>>595
え?
operator bool じゃないのか?

597 名前:デフォルトの名無しさん :03/01/15 00:26
>>596
これは多分ストリームの変換演算子なんですね。
C++第3版で言うと、P706、§21.3.3に書いてあります。

598 名前:デフォルトの名無しさん :03/01/15 00:27
operator bool()は整数に変換されてしまうので、
boolの文脈のみを許可したい場合にはoperator void*()を使うことがある。

599 名前:デフォルトの名無しさん :03/01/15 00:30
>>593
これだ. . . 自分で確かめも考えもせずに何を撒き散らしてやがる
while(cin>> num)のどこがどんな根拠でどのようにoperator()の呼び出しになるのか書いてみろや

600 名前:デフォルトの名無しさん :03/01/15 00:32
f(char * x)関数を呼び出すときは
f(y)の引数yの型は何にすれば良いですか?

601 名前:デフォルトの名無しさん :03/01/15 00:33
>>597
実験したら、そのようだ。

けど、何でそうなってるんだ?
if() の中では operator bool が真っ先に呼ばれるのに、operator bool を実装
してない理由がわからない。

602 名前:601 :03/01/15 00:34
>>598 を読んで納得しますた。

603 名前:デフォルトの名無しさん :03/01/15 00:35
>>587
だめ

604 名前:デフォルトの名無しさん :03/01/15 00:38
>>600
char* 型以外の何で呼びたい?

605 名前:デフォルトの名無しさん :03/01/15 00:38
今度こそ寝るぞ

606 名前:デフォルトの名無しさん :03/01/15 00:40
>>604
yをchar*型にしても、
xの値がyに反映されないのですが、どうしてでしょう?

607 名前:デフォルトの名無しさん :03/01/15 00:42
>>605
まだ

608 名前:デフォルトの名無しさん :03/01/15 00:49
"operator void*() reason"でgoogleで検索したら、たくさんヒットした。
何か的確な理由がないかどうか探している。

609 名前:デフォルトの名無しさん :03/01/15 00:53
>>606
引数が参照渡しではなく値渡しだから。
f(int x) に int y を渡して、y を変更できると思うか?

610 名前:デフォルトの名無しさん :03/01/15 00:58
>>608
http://pc3.2ch.net/test/read.cgi/tech/1037795348/491-498n
辺りが参考になるかと。

611 名前:デフォルトの名無しさん :03/01/15 01:03
>>610
今そのリンク読んでみました。
なるほど、void*なら、ポインタの演算ができませんから、使われる場所を
限定する効果があるのですね。
ありがとうございました。

612 名前:デフォルトの名無しさん :03/01/15 04:03
テンプレートの型引数で int を受け取った時に
unsigned int になるような型って取れないですか?

template <typename T> class Hoge{
 typedef unsigned T UnsignedType;
};
ではダメみたい(VC++6)なのですが。

613 名前:デフォルトの名無しさん :03/01/15 05:29
templete の < > が不等号の記号と間違われてコンパイルエラーが出ることがあるんだけど
どういう場合に出るんだっけ?
<>まわりの空白の有無で回避できるんだけど。

614 名前:デフォルトの名無しさん :03/01/15 06:08
>612

template <typename T> class Hoge{
unsigned int UnsignedType;
public:
Hoge(T x){
if(typeid(T) == typeid(int)){
UnsignedType=static_cast<unsigned int>(x);
}
}
};

こんな感じでいいんじゃない?

615 名前:デフォルトの名無しさん :03/01/15 06:34
template <int> class Hoge{
 typedef unsigned int UnsignedType;
};
特殊化スレ


616 名前:デフォルトの名無しさん :03/01/15 14:15
メモリリークを見つけるツールとかってあるのでしょうか?
Visual C++.NETを持っているのですが、そのデバッガの使い方は
まったくわかりません。
もしデバッガでできるのでしたら、その方法を教えてください。

よろしくお願いします。

617 名前:デフォルトの名無しさん :03/01/15 14:20
DEBUG_NEW

618 名前:デフォルトの名無しさん :03/01/15 14:24
BoundsChecker とか。

619 名前:デフォルトの名無しさん :03/01/15 14:27
C++Builder買ってCodeGuard使え!最強だぞ。

620 名前:デフォルトの名無しさん :03/01/15 16:53
cout.flush()ってたとえば↓のような場合、どういう役に立っているのですか?

例:
cout<<"test\n";
cout.flush();

621 名前:山崎渉 :03/01/15 17:43
(^^)

622 名前:C++厨 :03/01/15 19:36
>>620

streamのflushれす
MSDNでも見ればわかるよ

623 名前:デフォルトの名無しさん :03/01/15 20:26
>>620
バッファのフラッシュ(書き出しみたいなモン)たとえば
cout<<"test\n";
cout.flush();
BugFunc();
とあって、 BugFunc() の実行でプログラムが落ちても
test
は出力される。


624 名前:デフォルトの名無しさん :03/01/15 20:49
>622-623
親切丁寧な解説Thanxd
理解できました。
MSDN読んでも判んなかった物で…

625 名前:デフォルトの名無しさん :03/01/15 21:14
>>623
普通は '\n' がきた時点で flush されるから、
その例だと cout.flush(); あってもなくても変わらなくない?

626 名前:デフォルトの名無しさん :03/01/15 21:16
>>625
> '\n' がきた時点で flush される
そいつぁ初耳

627 名前:デフォルトの名無しさん :03/01/15 22:13
>>626
きっとstdioが下請けになってるとでも思い込んでテストもしてないんだろ

628 名前:デフォルトの名無しさん :03/01/15 22:31
ダイアログのピクチャーボックスに描かれた絵をウインドウを閉じたり、縮小しても消えないようにしたいです。BITMAPINFOHEADERやStretchDIBitsを使えばいいのかなとおもうのですけど、やり方がいまいちわかりません・・教えてください。
私が足したプログラムは次のだけです。
void CMy00000View::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

int x, y;

CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
CPen* oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);


629 名前:デフォルトの名無しさん :03/01/15 22:46
マルチ
(・A・)イクナイ!

630 名前:デフォルトの名無しさん :03/01/15 22:46
Comeau C++ってコンパイラ使ってる人います?
C++→Cのトランスレータ機能があるっぽいんですが、実際のところ
どんな感じで出力されるんでしょうか?
もしくはほかに現在入手できるC++→Cのトランスレータってあります?

・・・ってスレ違い?

631 名前:デフォルトの名無しさん :03/01/16 07:01
例外や継承はどう実装するんだ?

632 名前:とけますか? :03/01/16 13:48
下記のコードで、標準出力に Giko の所持金が正しく表示されるように、
クラス Human を修正せよ。
クラス Giko および main() 内部を変更してはいけない。

#include <iostream>

class Human {
public:
int getMoney() { return 10000; }
};

class Giko : public Human {
public:
int getMoney() { return 10; }
};

int main() {
Human* usual = new Human();
Human* giko = new Giko();

cout << " usual : " << usual->getMoney() << endl;
cout << " giko : " << giko->getMoney() << endl;

delete usual;
delete giko;

return 0;
}

633 名前:デフォルトの名無しさん :03/01/16 13:57
>>632
宿題スレいけよボケ
二度と来るな。

634 名前:632 :03/01/16 14:06
いきました。
どうもどうも。

635 名前:デフォルトの名無しさん :03/01/16 15:32
632ではないが

class Human {
 virtual int getMoney() ;
};

class Giko : public Human {
 int getMoney() ;
};

のようなときに派生クラスのgetMoney()はvirtualつけなくていいけど
派生クラスだけ見たときに仮想関数かわかりにくいのとコピペで書くから
virtual つけちゃうんだけど、これってよくないの? vtable とか大きく
なったりする?

636 名前:デフォルトの名無しさん :03/01/16 16:53
>>635
親クラスのgetMoneyがvirtualなんだから自動的にGikoのもvirtualになる。
vtableのサイズは変わらん。
お作法的にはvirtual付けるべき。


637 名前:635 :03/01/16 17:53
>>636
どーも、
>vtableのサイズは変わらん。
パフォーマンス的には変わらないんですね?
>お作法的にはvirtual付けるべき。
これからもコピペでつけ続けます。アリガトーゴザイスマタ

638 名前:デフォルトの名無しさん :03/01/16 19:58
int *d = new int[size];
として
delete [] d;
とするとエラーが出てしまいます。
何が原因でしょう?



639 名前:デフォルトの名無しさん :03/01/16 20:19
>>638
1. 途中で、d の値が書き換わってる
2. d で確保された領域の前後が書き換えられている
のいずれかだと思われ。
おそらく、2. の方。


640 名前:デフォルトの名無しさん :03/01/16 23:02
char m_IdNumber[10][20];
の中に文字列を代入し、

void A(char*)のパラメータに渡すにはどうすればいいんでしょうか?
A(m_IdNumber)とするとエラーになります。
よろしくお願いします。

641 名前:デフォルトの名無しさん :03/01/16 23:30
>>640
A((char*)m_IdNumber);
期待した動作になるかどうかはわからんが。

642 名前:デフォルトの名無しさん :03/01/16 23:36
>>640
やりたいことを小一時間考えなおして、もう一度きちんと書け。

643 名前:デフォルトの名無しさん :03/01/17 01:46
auto_ptrをlistやmapの要素にすると、
insertでコンパイルエラーになるのですが、そういうもの?

644 名前:デフォルトの名無しさん :03/01/17 01:53
>>643
だからあれほどauto_ptrをコンテナの要素に使うなと……
詳しい理由はそこらじゅうに書きまくられていることなので省略。

645 名前:デフォルトの名無しさん :03/01/17 03:19
>>643
Effective STLの第8項を読むよろし。

646 名前:C++厨 :03/01/17 14:41
>>640
A(m_IdNumber[0]);とかじゃなくて?


647 名前:デフォルトの名無しさん :03/01/17 15:18
最近暇になったので久々にC++に触ろうと思います。
が、最後に触ったのが1995〜1996あたりなので、
すっかり浦島状態です。

んで、どんな拡張がされてきたか解説してあるサイトがあったらおせーて


648 名前:デフォルトの名無しさん :03/01/17 22:40
とりあえずTCPLの第3版が出てるから、
それを読んでみるのがいいと思う。

649 名前:デフォルトの名無しさん :03/01/17 22:55
すみませんただの興味なんですが、

typename* data = new typename[3, 4];

とかすると何が起こってるんでしょうか。

650 名前:デフォルトの名無しさん :03/01/17 22:59
new typename[4];
と同じ


651 名前:デフォルトの名無しさん :03/01/17 23:02
予約語?

652 名前:デフォルトの名無しさん :03/01/17 23:03
カンマ演算子やね

653 名前:デフォルトの名無しさん :03/01/17 23:03
>>650
サンクス。
じゃあ初めの引数は何のために書けるようにしてるんですか?

654 名前:デフォルトの名無しさん :03/01/17 23:06
>>652
理解しました。というか変数宣言とかでも普通に使うモノでしたね。
なんか変わった所に使うと分からなくなってしまう。

655 名前:デフォルトの名無しさん :03/01/17 23:09
コンストラクタの初期設定子で配列の要素が初期化できないのは
C++構文の仕様のためなんですか?

656 名前:デフォルトの名無しさん :03/01/17 23:29
wara::wara() : morara[0](mona), morara[1](giko), morara[2](zonu)
{
}
とかなってたとして
wara::moraraのサイズをどう管理する罠??

657 名前:デフォルトの名無しさん :03/01/17 23:36
>>656
ちょっと分からないんですが、安全のためできないようにしているという
ことでしょうか。
int morara[3]のようにサイズ指定していても無理なんですか。
いや初心者で申し訳ないですが。

658 名前:デフォルトの名無しさん :03/01/17 23:40
3を2にしたり10000にしたり
お客さんの注文ってのはぐちぐち(板違いすまそ

659 名前:i = 10 + 20 + 30; :03/01/17 23:46
i = 10 + 20 + 30; は、一般のコンピウタでは、
(イ)、(炉) のどちらになるのでつか?

(イ) i = ( 10 + 20 ) + 30;

(炉) i = 10 + ( 20 + 30 );

660 名前:  :03/01/17 23:49
教えてください

C++でsnprintfを自作することになりました。
参考になる資料とかありましたら教えてください。
フリーで使えるソースが何処かに落ちていると良いのですが。

661 名前:デフォルトの名無しさん :03/01/17 23:55
ここにもか。

662 名前:デフォルトの名無しさん :03/01/17 23:55
>>659
一般のコンピュウタかどうかじゃなくて、
その文を解釈するルールに依存する。

>>660
glibc

663 名前:デフォルトの名無しさん :03/01/17 23:56
>>660
マルチはやめれ!

664 名前:デフォルトの名無しさん :03/01/18 00:02
>>655
結論から言うと無い。が、漏れも欲しい。
Hoge::Hoge():m_array({1, 2, 3}){ }
って書けたら便利なのに。

665 名前:デフォルトの名無しさん :03/01/18 01:15
>>659
ここはC++スレであるからその文がC++であると仮定すると、必ず (イ)になる。

>>664
同意。C99には (int[]){1,2,3} みたいに配列リテラルを作れる機能が
ついたのでいずれC++にも流れてくると思うけど、より一層文法が
酷いことになりそうなのが少し怖い。

666 名前:デフォルトの名無しさん :03/01/18 01:18
C99ってあいまいなところを整えた反面、
妙な文法を変に導入されてるのが怖いよ・・・
つかgcc3がc99をデフォにしてるのってどうなのかなあ

667 名前:デフォルトの名無しさん :03/01/18 01:50
例外処理を最近触り始めたのですが、
アセンブラコードを吐かせたらとても悲しいコードになってました。
こういうものなのでしょうか。

668 名前:デフォルトの名無しさん :03/01/18 02:04
>>667
処理系によって異なる。

669 名前:デフォルトの名無しさん :03/01/18 02:36
ものすごく簡単なのかもしれませんが
コンソール出力で小数を出力する場合に、
特定の桁で四捨五入して出力させることはできませんか?
d = 0.12345 とあったとして、coutで
0.123と表示したいのですが。

670 名前:デフォルトの名無しさん :03/01/18 02:52
表示する小数点以下の桁数をしてやればよいです

671 名前:デフォルトの名無しさん :03/01/18 02:56
std::cout.precision(3);
って感じに。たぶん。

672 名前:デフォルトの名無しさん :03/01/18 02:59
LPCTSTR str[] = {"aaa","bbb"};
この配列の要素の数を返す関数を教えて下さい。
この場合だと、1か2を返す関数です。

673 名前:デフォルトの名無しさん :03/01/18 03:00
>>672
関数でなくても
sizeof(str) / sizeof(str[0]); でいいのでは。

674 名前:デフォルトの名無しさん :03/01/18 03:02
あ、だめかもしれん。スマソ。

675 名前:デフォルトの名無しさん :03/01/18 03:08
LPCTSTRってのがchar*のtypedefなら、
sizeof(str) / sizeof(str[0]); で行けるよ。

676 名前:デフォルトの名無しさん :03/01/18 03:16
できました。
sizeof(str) / sizeof(str[0]); で、要素の数の2が得られました。
しかし、理由が分かりません。
解説キボンヌ。

677 名前:デフォルトの名無しさん :03/01/18 03:22
あ、わかりまそた。ありまん。

678 名前:デフォルトの名無しさん :03/01/18 03:23
>>676
(1).sizeof(str)で、str[]全体のサイズがわかる。
(2).sizeof(str[0])で、str[]の要素一個当たりのサイズがわかる。
(1)を(2)で割れば、str[]の中にある要素の個数が求まる。

679 名前:デフォルトの名無しさん :03/01/18 03:32
#define ELEMOF(array) (sizeof (array) / sizeof *(array))
とかすると便利でつ。

全体のサイズを各要素のサイズで割れば要素数が得られるというわけです。

ELEMOF にポインタを入れると破綻することに注意。

680 名前:デフォルトの名無しさん :03/01/18 03:35
>>674が気になる。
Unicodeとかでも関係ないよね?

681 名前:デフォルトの名無しさん :03/01/18 03:41
>>680
関係ないというか、ポインタの配列なんで完全に無関係。

でも、もちろん文字列バッファの長さを返すこともできるわけで、
その場合 MBCS でも Unicode でもちゃんと要素数を返してくれる。
だから、TCHAR buf[128]; とか使ってるときに
sizeof buf とかで要素数を得ようとしちゃダメなのね。

682 名前:デフォルトの名無しさん :03/01/18 03:44
>>680
だめな事はあるのだろうか?
例えばchar str[][5] = {"abc", "defg"}; のような場合でも、
sizeof(str) / sizeof(str[0])) で行けるはずだ。

683 名前:デフォルトの名無しさん :03/01/18 04:01
きめうちで良いじゃん。それが嫌ならCなんかやめれ。

684 名前:デフォルトの名無しさん :03/01/18 04:06
>>683
マジックナンバー厨は(・∀・)カエレ!!

685 名前:デフォルトの名無しさん :03/01/18 04:39
しかたないじゃん。Cがヘボいんだから。

686 名前:デフォルトの名無しさん :03/01/18 04:40
#define ARGOF(s) (sizeof(s)/sizeof(*(s)))
俺は↑だけど、
struct {
char buf[256] ;
int i[5] ;
} TEST, test[10] ;
ARGOF(test);
ARGOF(test[0].buf); /* ARGOF(test->buf) */
ARGOF(test[0].i); / *ARGOF(test->i) */
でも、ちゃんと配列の数を取れるYO!

687 名前:デフォルトの名無しさん :03/01/18 04:53
>>682 ポインタじゃなくてもそうやるんだね。
今コンパイルしてそれで出来ました。ありまん。

688 名前:デフォルトの名無しさん :03/01/18 08:44
int sw;
scanf("%d\n",&sw);
printf("読み込み完了\n");
というコードなのに2回数字を読み込まないと
”読み込み完了”が表示されません。
なぜなんでしょう?

689 名前:デフォルトの名無しさん :03/01/18 09:22
fflush(stdout);をprintfの後にいれてみて

690 名前:638 :03/01/18 09:26
>>639
確保された領域と前後に関係ありますか?
どういうこと?

691 名前:デフォルトの名無しさん :03/01/18 09:32
通常、new/mallocで確保される領域は
返されるポインタの直前に、サイズと次の領域へのポインタを持っている(実装依存)。
ここが壊れるとdelete/freeが異常終了する。

692 名前:デフォルトの名無しさん :03/01/18 09:34
>>690
639じゃないが
メモリ領域を確保するとき、メモリ領域の前後に
管理用のデータを入れている処理系もある
これが壊れると管理もぐちゃぐちゃになってエラーがおきる場合もあるだろう
たとえば
[アロケートサイズ][アロケート領域] を確保して、new が アロケート領域を
返すとき[アロケートサイズ]が狂えばどうなるか…ということ

639じゃないから違うかもしれないが

693 名前:デフォルトの名無しさん :03/01/18 09:41
>>688
scanf("%d\n", &sw)の\nは"入力ストリーム中の次の空白でない文字とマッチ
するもの"なのです。従って、"2回数字を読み込まないと"ではなく、"1回
数字を読み込み、空白でない文字と\nをマッチさせる"ということになりま
す。わかりましたか?


694 名前:638 :03/01/18 09:41
>>691,692
なるほど。
でも692で言うところのアロケート領域(よく分からないけど・・・)
の破壊を防ぐ方法ってあるんですか?

695 名前:638 :03/01/18 09:47
>>694
アロケート領域のところはアロケートサイズの間違いでした。


696 名前:デフォルトの名無しさん :03/01/18 09:54
>>694
コードをちゃんと書くこと
int *d = new int[size];
d++; // ←こういうの!
delete [] d;
のようなタココードにならないように

697 名前:638 :03/01/18 10:05
>>696
d++はないようで、
何が原因なのか分かりません。
他に可能性としてどういうのがありますか?

698 名前:デフォルトの名無しさん :03/01/18 10:18
>>679
どこで見たか忘れたけど、配列だけに適用される (つまりポインタに
適用するとエラーになる) サイズ取得関数
template<class T, int N>
inline int ARRAY_SIZE( T (&)[N] )
{
return N;
}
ただし、VC++ では使えない。

699 名前:デフォルトの名無しさん :03/01/18 10:23
>>697
dより前(後)にmalloc/newされたメモリ領域へのアクセスでのバッファオーバーラン。
誤ったポインタ演算。


700 名前:デフォルトの名無しさん :03/01/18 11:11
>>697
int *d = new int[size];
int giko[1];
giko[1]=0; // ←こういうのは?
delete [] d;

701 名前:デフォルトの名無しさん :03/01/18 11:27
>>700
それと似たようなことに一度遭遇したことがあるよ
自分書いたコードが原因じゃなかったから死ぬほど焦った

702 名前:C++厨 :03/01/18 15:20
おい、皆さん
例外安全をどう思われますか?

703 名前:デフォルトの名無しさん :03/01/18 15:27
>>702
重要と思われます。

704 名前:669 :03/01/18 16:00
>>670 671 さんありがとうございます。
その応用で出力先をファイルにしたいと思い
ofstream fout
でファイルに書き込もうとしたのですが桁数がどうしてもしていできません。
ソースは

string a;
double d;
string g;

fout << a;
fout.precision(3);
fout << d;
fout << g << endl;
という感じで書いています。
つまり一行にstringと桁数指定したdoubleを書き込みたいのです。
このまま実行すると書き込みはしてくれるのですが桁数が指定できません。
どこがちがうのでしょうか?よろしくお願いします。


705 名前:デフォルトの名無しさん :03/01/18 16:27
>>704
<iomanip> ヘッダファイルと setw と setprecision を調べてみれ。

706 名前:デフォルトの名無しさん :03/01/18 16:53
int *pp
と、ポインタの宣言をしてその後値を代入すると
値が割り当てられていないローカルな変数 'pp' に対して参照が行われました。
とエラーが出てしまうのはなぜ?

707 名前:デフォルトの名無しさん :03/01/18 16:54
template<typename T> struct C1 {
  void operator = (T) { }
};

template<typename T> struct C2: public C1<const T *>{
  // wow!
  // void operator = (const T * a) {
  //   C1<const T *>::operator = (a);
  // }
};

int main(int ac, const char *av[]) {
  C2<char> c;
  c = "foo"; // <-!!??
  return 0;
}

C2::operator = () を定義してやらないと "!!??" の部分で
コンパイルエラーになるのが悔しくて悔しくてアタシ夜も眠れません。
エラーメッセージはこんな感じ ( g++ 3.2 )

> no match for `C2<char>& = const char[4]' operator

g++ も VC++ も同様なのでコンパイラのバグじゃないと思うんだけど
これはれっきとした仕様でしょうか?

708 名前:デフォルトの名無しさん :03/01/18 16:59
>>706
int *pp;
*pp = 2;

とかやってませんか? pp は「数値の入れ物のありか」を指すだけで
実際にはどこにも「入れ物」は存在していません。

int i; // <- 数値の入れ物
int *pp; // <- 入れ物のありかを示すもの
pp = &i; // <- ありかを示す
*pp = 2; // <- ok.

709 名前:デフォルトの名無しさん :03/01/18 17:20
>>707
仕様だな。

http://www.kuzbass.ru/docs/isocpp/over.html#over.ass
> Because a copy assignment operator operator= is implicitly declared for a class if not declared by the user,
> a base class assignment operator is always hidden by the copy assignment operator of the derived class.

710 名前:709 :03/01/18 17:24
>>707
template<typename T> struct C2: public C1<const T *>{
  using C1<const T *>::operator =;
};

定義しなくてもusing宣言でいける。
これで眠れるか?

711 名前:709 :03/01/18 17:28
アァ、
using したら、

struct B { void operator = ( int ); };
struct D : B { using B::operator =; };
void f()
{
  D d;
  B b;
  d = b;
}

これが通っちまう。
定義するしかないやも知れぬ。

712 名前:デフォルトの名無しさん :03/01/18 17:41
error LNK2001: 外部シンボル ""int __cdecl LeastSquare_GA
(double *,unsigned int *,unsigned int *,unsigned int *,unsigned int *,int)"
(?LeastSquare_GA@@YAHPANPAI111H@Z)" は未解決です
というエラーはどうすればよいですか?
何が未解決なのでしょうか?

713 名前:デフォルトの名無しさん :03/01/18 17:52
>>712
LeastSquare_GA とかいう名前の関数のありかが未解決。

宣言だけ書いて定義を書き忘れてるとか、定義を書いたファイルを
コンパイルし忘れてるとか、定義の入ったライブラリをリンクし忘れてるとか、
だろう。


714 名前:デフォルトの名無しさん :03/01/18 17:58
>>709-711
サンクスコヽ(´ー`)ノサンクスコ
今日はいい夢が観られそうです。

715 名前:デフォルトの名無しさん :03/01/18 18:09
・コンストラクタ
・デストラクタ
・代入演算子関数
・friend属性
は継承されません。

716 名前:デフォルトの名無しさん :03/01/18 18:24
>>713
コンパイルもしてるし、
extern宣言もしてるのにダメです。
他に何が原因なのでしょう?

717 名前:デフォルトの名無しさん :03/01/18 18:41
>>716
extern C とかかな。

その関数は自分が作ったもの?

718 名前:709 :03/01/18 19:33
>>715
継承の問題じゃなくて、派生クラスで暗黙に定義される operator= が
基底クラスのやつを隠してしまうという話。

719 名前:718 :03/01/18 19:34
スマソ。718 は 709 じゃない。「709じゃないが…」と入力しようとして
手がすべった (w

720 名前:デフォルトの名無しさん :03/01/18 20:21
>>718
なるほどそういう事か。
物の本には、デフォルトの代入演算子が基本クラスの代入演算子を「隠す」
という表現の代わりに、「継承されない」という表現を使っているが、同じ意味
なのだな。

721 名前:デフォルトの名無しさん :03/01/18 20:51
operator=をvirtualにする意味ってありますか?

722 名前:デフォルトの名無しさん :03/01/18 23:13
mem_funの存在理由がマジわからん。
なんでこんなものが必要なんだ?

723 名前:デフォルトの名無しさん :03/01/18 23:17
最初の目的は、メンバ関数の呼び出しをカプセル化して、
リストのforeachに適用するためのもんだと思った。

724 名前:デフォルトの名無しさん :03/01/18 23:29
>>722
仮想関数をアルゴリズムに渡す時にないとマズイ。

725 名前:デフォルトの名無しさん :03/01/18 23:33
>>721
あまりない。どうせ=演算子は継承されないから、再定義が必要だし。

726 名前:デフォルトの名無しさん :03/01/18 23:34
>>722
class Timer {
 vector<EventHandler*> handlers;
 void on_timer() {
  std::for_each( handlers.begin(), handlers.end(), mem_fun(&EventHander::fire) );
 }
};

とかなんとか。

727 名前:デフォルトの名無しさん :03/01/19 00:40
>>724
あと関数オブジェクトにしておかないと、not1 みたいな関数アダプタが
使えんし。

728 名前:デフォルトの名無しさん :03/01/19 13:40
質問でーす。
テンプレートクラス A があって、
unsigned char と signed char で特殊化している時に
A<char> と書いたら unsigned char 版にも signed char 版にもならずに
特殊化していない方で展開されるのは仕様でしょうか?

729 名前:デフォルトの名無しさん :03/01/19 13:46
仕様

730 名前:デフォルトの名無しさん :03/01/19 13:47
>>728
仕様だと思うよ。ちなみに配列にした場合その要素数が異なると
異なる型とみなされます。これは関数オーバーロード(このときは
char*とみなされる)とは違ってくるので注意が必要かも。
って俺だけか。。

731 名前:729 :03/01/19 13:49
理由:char, signed char, unsigned char はそれぞれ別の型だから

732 名前:デフォルトの名無しさん :03/01/19 13:49
signed char と unsigned char と char は別の型ということですかね?

733 名前:C++厨 :03/01/19 13:54
>>722
Effective STLにmem_fun, mem_fun_refの使い方が載ってますよ

# 余談ですがこの本(ESTL)を読んでいる時は日曜洋画劇場でファントムという
# よくわからない映画をやっている時でした。

734 名前:728 :03/01/19 14:14
>>729, 730
char は別の型なんですね…知らなかった。
てっきり signed char か unsigned char の別名だと思ってました。
(どっちの別名なのかが環境依存なだけだと思ってました。)

別の型ならどっちにもかからないのが正常ですね。I Understood.
ありがとうございました。

735 名前:デフォルトの名無しさん :03/01/19 14:17
mem_fnはもうboostのを標準にしてもいいんじゃないかな

736 名前:デフォルトの名無しさん :03/01/19 22:30
モスバーガーでやってる
tea plus plus(お茶にもう一品)
はC++のもじりなのではないかと小一時間…(略

ガイシュツだったらスマソ

737 名前:デフォルトの名無しさん :03/01/20 00:17
昔のライブラリを引っ張り出して使おうとしたら新しいコンパイラになってて(borland の5.5)
さっぱりわかならい。

basic_ostreamなんちゃらってなんなんだ……例をコピペしてもうまくいかないし。
<<のオーバーロードって、テンプレートつかってるときは駄目なんでつか?

738 名前:デフォルトの名無しさん :03/01/20 02:47
>>734
> てっきり signed char か unsigned char の別名だと思ってました。

C++ でなくて C ならば、その認識で合ってるよ。

739 名前:デフォルトの名無しさん :03/01/20 03:29
え?

740 名前:デフォルトの名無しさん :03/01/20 14:29
憂鬱本のC++コードってかなり糞だよな?

741 名前:デフォルトの名無しさん :03/01/20 18:30
デバッグ用にcout使ってDOS窓に文字列出力してるんだけど、
文字の色を変えることって出来ないの?

環境によって違う??
VC6です。

742 名前:C++厨 :03/01/20 18:45
#include <conio.h>
textcolor(YELLOW);
cprintf("まんこ\r\n");

前bccで遊んだときはこうですた

743 名前:デフォルトの名無しさん :03/01/20 19:07
>>740
あれはC++の本ではないので深く考えてはいけません。

744 名前:デフォルトの名無しさん :03/01/20 20:31
//---------------------------------------------------------------------------

#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
textcolor(YELLOW);
cprintf("YELLOW\r\n");
return 0;
}
//---------------------------------------------------------------------------


745 名前:741 :03/01/21 10:34
それはネットで検索してすぐみつかったからやったんだけど
textcolorが宣言されてないって言われるよ。
conio.hの中もみたけど無かった。

コンパイラは何ですか?>>744


746 名前:デフォルトの名無しさん :03/01/21 10:54
ifstream input(INPUTFILE);
input >> fftData.in[i];

みたいな感じで、標準入出力してるソースがあるんですけど、
inてのはメソッドでしょうか演算子でしょうか。
受けてるメソッドが見あたらないんですが、
クラスに対して標準入力されたときの動作を教えて下さい。

747 名前:デフォルトの名無しさん :03/01/21 11:18
fftData オブジェクトのクラスの定義を見なさい。

748 名前:デフォルトの名無しさん :03/01/21 11:29
>>746
なんか勘違いしてる気がする

749 名前:デフォルトの名無しさん :03/01/21 11:47
in[] ならともかく、in がメソッドではないのは明らかだろう。

750 名前:デフォルトの名無しさん :03/01/21 14:18
>>746
fftDataの中身は知らんが、
in[]はfftDataのクラスなり構造体なりのメンバ変数。
メソッドなら()とかつくし、少なくともそんな名前の演算子は俺は知らん。
あと、標準入力じゃなくて入力ファイルストリームからの入力。


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