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


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

【初心者歓迎】C/C++室 Ver.50【環境依存OK】



1 名前:デフォルトの名無しさん [2008/02/28(木) 00:01:39 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.49【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1203478421/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

528 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:47:14 ]
boost::function

529 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:35:51 ]
>>528
どうやってやるのさ

530 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:38:29 ]
>>523-527
あ、オブジェクトではなく、クラスにひも付けすればよいのですね。

有り難うございました!

531 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:39:03 ]
とあるクラスの派生クラス郡の中で一つの派生クラスだけ
関数の引数が異なることになってしまいました

こういう場合はどうしたらよいでしょうかorz

532 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:51:31 ]
設計しなおす

533 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:52:10 ]
>>531
全クラスに引数増やすとか(そしてデフォルト引数をつけておくとか)、
その派生クラスだけ別のメンバ関数で余分の引数を設定しておくとか、
引数の集合を何かクラスにまとめて、上位の概念に置き換えることで引数を共通にするとか。

534 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:53:54 ]
dynamic_castしろと悪魔が囁いているぜ

535 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:56:46 ]
>531
1. きっとやりたいことが間違ってるから考え直す。
2. boost::any とか boost::variant とかでぶちかます。

まぁもう少しやりたいことを詳細に説明するべきだろうね。

536 名前:531 mailto:sage [2008/03/08(土) 02:14:02 ]
とある計測器と連携して、とあるプロセスを監視してそのデータをモニタに表示するのですが
今回のプロセスだけ表示させたいパラメータの数が増えてしまいました

監視プロセスが複数同時に走っていて、そのうち3つを同時に表示するようにするため
表示対象をユーザーが切り替えられるようにするため
表示クラスに監視クラスのポインタをつかって保持させています
監視クラスに
GetData(int OutputA, int dataB,int dataC)
という関数をよういしていたのですが
最新の計器が監視できるパラメータが増えてしまって・・・orz



537 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:22:28 ]
>>536
そのシグニチャでGetだと言うのなら、参照かポインタ渡しじゃないの?
まあそれはいいとして。
パラメータの種類を指定して、データを1種類だけGetする関数を作ったら?

538 名前:デフォルトの名無しさん [2008/03/08(土) 02:38:59 ]
void calc(int& m, fstream* fio);

int main(void)
{
fstream fio[10];
char filename[10];
int m, steps;
steps = 7;
fio[0].open("calc0.dat");
m = 1;
while(m <= steps){
sprintf(filename, "calc%d.dat", m);
fio[m].open(filename, ios::in | ios::out);
m++;
}
m = 1;
while(m <= steps){
calc(m, fio);
m++;
}
return 0;
}

539 名前:デフォルトの名無しさん [2008/03/08(土) 02:43:13 ]
void calc(int& m, fstream* fio)
{
int i, j;
int a, d[100];
j = 1;
while(j <= 3){
fio[m-1] >> a;
d[j] = a;
j++;
}
j = 1;
while(j <= 3){
fio[m] << d[j] <<' '<< j <<'\n';
j++;
}
}
calc0.datの中身
5
16
77

基本的にすべてのデータファイルが同じになるようにプログラムを書いたのですが。
うまくいかないです。どこか間違っていますか?

540 名前:デフォルトの名無しさん [2008/03/08(土) 02:43:52 ]
void calc(int& m, fstream* fio)
{
int i, j;
int a, d[100];
j = 1;
while(j <= 3){
fio[m-1] >> a;
d[j] = a;
j++;
}
j = 1;
while(j <= 3){
fio[m] << d[j] <<' '<< j <<'\n';
j++;
}
}
calc0.datの中身
5
16
77
基本的にすべてのデータファイルが同じになるようにプログラムを書いたのですが。
うまくいかないです。どこか間違っていますか?

541 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 09:11:50 ]
>>540
>どこか間違っていますか?
あんたの説明。
結果がどうなったのか、どうなるつもりだったのか(これは全てcalc0.datと同じになるということか)、
実行した環境と処理系は何か、位のことは書いても罰は当たらんよ。

542 名前:511 mailto:sage [2008/03/08(土) 11:33:07 ]
昨日の続きなんですが、引数のの違う関数を
まとめた関数テーブルって、どう実装するのが
良いでしょうか?
>512のようにlistや可変長引数だと、個数が
違う場合には有効ですが、構造体を渡す場合には
無理があると思えます。
(構造体の要素をPOD型に分解してlist化するとか?)

>513で書かれた特殊化では、どう実装するのかが
全く閃きませんorz
キャストを使う以外で違った構造体やクラスを
スムーズに(できれば低コストで)渡す方法ってあるのでしょうか?

543 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:41:16 ]
>>542
昨日の続きと言われても状況を把握するために過去に遡って読むのは面倒なので目的を詳しく。
まぁ、よくあるGUIライブラリの実装などでは構造体を丸ごと渡すのではなく汎用ポインタを渡す形が多いけどね。

544 名前:511 mailto:sage [2008/03/08(土) 11:42:33 ]
なお今自分が使ってた方法だとこんな感じです。

class ArgBase { //引数親
public:
 virtual ~ArgBase(){};
}

class Arg1 : public ArgBase {
public:
 int arg;
}
//以下必要なだけArgBaseを引き継いだ構造体を作る

//関数テーブル
typedef bool(*pFunc)(ArgBase*) FUNCPTR;
FUNCPTR fuctable[10];
fnctable[0] = Func1;

//関数例
bool Func1(ArgBase *pArg) {
 //これがArg1が必要な関数なら
 Arg1 *ptr = dynamic_cast<Arg1*>(pArg);
 if(ptr == NULL) return FALSE;
 //処理
 return TRUE;
}

545 名前:デフォルトの名無しさん [2008/03/08(土) 15:49:36 ]
久しぶりにプログラムを組むのですが、初歩的なことが分からないので
教えてください。昔


float a;
a=1.0

と1ではなく1.0にしなさいと教わったのですが、その詳しい理由を
忘れました。
どうしてなのでしょうか?


546 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:56:19 ]
>>545
1.0も中途半端だな。1.0fと書け。
1と書くとそれはint型になる。
1.0と書くとdouble型になる。
1.0fと書くとfloat型になる。
intやdoubleからfloatへの変換は警告が出る可能性があるので、
代入先と同じ型にしておけということ。生成される機械語は同じだろうけど。



547 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:23:22 ]
>>543
やはり間違わないように気をつけてvoid*で渡してキャストするのが
常套手段なんですかね。

548 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:25:25 ]
あと、
typedef bool(*pFunc)(ArgBase*) FUNCPTR;
じゃなくて
typedef bool(*FUNCPTR)(ArgBase*);
でしたorz

549 名前:デフォルトの名無しさん [2008/03/08(土) 17:09:29 ]
現在、勉強がてらに、Windows用のクラスライブラリを無意味に作ってるのですが
dynamic_castって良い機能ですねぇ
基本クラスに無意味に仮想関数を突っ込まなくても、派生クラスの機能が使えるなんて嬉しすぎる


550 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:12:08 ]
dynamic_cast禁止

551 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:12:19 ]
は?

552 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:12:46 ]
すげークラスライブラリきた

553 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:24:08 ]
俺も今無意味にgtkのラッパークラスライブラリ作ってるよ!

Window wnd("sample",MAIN_WINDOW);
vBox box(MAIN_WINODW);
Label sample_label("sample",MAIN_WINDOW);
Button ok_button("OK",MAIN_WINDOW);

CREATE(MAIN_WINDOW);

ok_button.clicked(func);

box << sample_label << ok_button;
wnd << box;

CONSTRUCT(MAIN_WINDOW);

みたいにmain関数の中で書いたらコンパイルが通るようになるやつ。
今マニピュレーター実装中。

554 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:26:54 ]
これだから演算子多重定義が叩かれるわけだ。

555 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:49:29 ]
>>550
ごめんねごめんね(*‘ω‘ *)
void __fastcall TForm1::N1Click(TObject *Sender) {
 TMenuItem* menu = dynamic_cast<TMenuItem*>(Sender);
 switch(menu->GroupIndex)  {
  case 1:
   switch(static_cast<TSortDirection>(menu->Tag)) {
    case sortLarge:
     break;
    case sortSmall:
     break;
   }
   break;
   case 2:
    switch(static_cast<TLogOutputMode>(menu->Tag)) {
     case logList:
      break;
     case logSingleLine:
      break;
    }
    break;
 }
 UpdateTitle();
}


556 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:05:19 ]
Cらしいプログラムですなあw



557 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:05:55 ]
これなら適切にdynamic_castを使っている場面に見える。

558 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:08:50 ]
TForm1とかN1Clickとかいただけない

559 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:17:40 ]
すみません。えらく単純な質問なんですが、
C++で「なんでもいいからキーを押すと続行」
というのはどうすれば実現できるのでしょうか?
文字列や数字を読み取らせる方法は知ってますし、
ググればいくらでも出てくるのですが、
「いったん入力待ちしていかなるキーを押しても構わず実行」
という風にしたいのです。

もちろん数字読み取らせて適当な数+ENTERという風に組めば
手間が増えるだけで大体同じことはできるます。
しかし、あるデータの異常値の原因を調べるため、
異常のたびにそのデータをグラフにして打ち出させたいんですが
たぶん三万回くらいやらなきゃならないんです・・・

560 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:25:40 ]
OSによる

561 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:26:01 ]
そこでpdcurses(ncurses)

562 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:27:06 ]
enterキーのみ反応でいいならgetchar()でもなんでもいけそうな気がする

563 名前:560 mailto:sage [2008/03/08(土) 18:33:28 ]
ありがとうございます。getcharでいけました

564 名前:デフォルトの名無しさん [2008/03/08(土) 18:33:56 ]
>546
ありがとうございます。
元がfloatなのにいらないお節介しなくても良さそうなのに。


565 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:34:05 ]
559の間違いです。すいません

566 名前:デフォルトの名無しさん [2008/03/08(土) 18:46:22 ]
msxml6.dllを使ってXMLのデータを取得しようと思っているのですが、
要素の属性の取り方だけ分かりません。
どのように取り出せばいいのでしょうか?



567 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:48:37 ]
>>564
>元がfloatなのにいらないお節介しなくても良さそうなのに。
大きな勘違いをしている悪寒。

568 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:22:34 ]
もうなんて言うか、初心者とかそういうレベルですらないんですけど、
昨日小一時間このミスに気づかなくてバグと死闘していたので…

int a,c,x;
unsigned int b;

x = max(-c, min(x, a - b));
としたとき、

(a-b)がunsigned intとして評価されてしまうのですが、

こういうとき、オペレーターの戻り値の語ってどうやって決まるんですか?
どこかの本では、大きい方に丸められるとか何とか書いてあった気がするんですが…
実際どのような規則になっているんでしょうか?

569 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:30:35 ]
>>568
算術型の標準変換、整数の格上げとか
そんなもんどの本にも載ってるだろ。

570 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:30:57 ]
>>564
>元がfloatなのにいらないお節介しなくても良さそうなのに。
もとがdoubleの値(1.0)をおまいが勝手にfloat型の変数に入れようとしているのを
コンパイラさんは(おせっかいかなと思いながらも)教えてくれようとしている。

レベルアップするためにも、人の忠告は素直に聞こうな。

571 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:35:44 ]
>>570
おまえはサル

572 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:37:00 ]
サルなら反省できる

573 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:43:39 ]
>>570
お前・・・なんという読解力のなさ・・

574 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:46:59 ]
>>570の言うことは間違ってないような・・・

575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:48:09 ]
>>570は正しい事を言っている気がするが
オレも読解力がないのだろうか

576 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:53:38 ]
皆無



577 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:54:05 ]
レスをたどると元々は
float a = 1;
のような気がする

578 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:59:33 ]
>>577
それだとfloat変数の初期化だよね。
もともとは以下のようにfloat←doubleの代入だったはず。
>float a;
>a=1.0


579 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:08:18 ]
>>569
持ってる本は2冊ともunsignedまでは書いてないんだが…
駄目なの使ってるのね…(一つは学校指定だけど)


算術型 標準変換 でググったら見つかりました、有り難う。

long double > double > float > unsigned long int > long int > unsigned int > int
int > unsigned int だとばっかり思ってた。
(表現力が大きい方に…ってかいてあるからマイナスが表現できる方が上なのかと…
 よく考えてみたら、表現できる値の絶対値はunsignedの方が大きいけど。)

580 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:15:02 ]
>>566
DOMだったら、selectNodesとかselectSingleNodeとかを使えばいいよ。

581 名前:デフォルトの名無しさん [2008/03/08(土) 21:20:47 ]
>578
最初に書き込んだものです。
多分みなさんが思っているよりもっと初歩的なことが
分かっていないのだと思います。
正直doubleとfloatの違いが精度の違いでfloatがメモリ確保の
ためだけに使われるぐらいにしか考えていません。
情報落ちや桁落ちの問題でここまでするのでしょうか?

正しい解釈はこうですか?

int a;
float b;
double c;

a=1;
b=1.0f;
c=1.0;




582 名前:デフォルトの名無しさん [2008/03/08(土) 21:23:45 ]
>581
すいません。もう少し質問させてください。
何のためにここまでするのかと言う部分です。
情報落ち、桁落ち、丸め誤差、その他
このうちのどれですか?


583 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:31:40 ]
おっもくそ大量の数値データを扱うときはdoubleじゃなくてfloatにするなぁ・・・
で、単純に、floatを準備したからにはfloatを突っ込む。と。

584 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:37:28 ]
>>581
何をどう解釈しているのか分からないが…。

1や1.0などの定数自身も型を持っていることは理解している?
その定数をどの型の変数に代入するかに無関係に、定数自身が型を持っている。
1 ← int型
1U ← unsigned int型
1.0 ← double型
のように。

>情報落ち、桁落ち、丸め誤差、その他
この場合は、その他。
実数の1.0という値は、double型でもfloat型でも桁落ちも丸め誤差もなく正しく表現できる。

ここで指摘されているのは、定数の書式としてfloat型の定数を表現できるのだから
それを使用したほうが適切だろう、ということ。

精度の大きい型の値を精度の小さい型の変数に代入しても、桁落ちなどがなければ全く問題ない。
桁落ちなどがあるとしても、それを意図して書いているなら動作としては正しい。
でも意図したものかどうかプログラムを他人が読んでも分からないので、そのような場合は明示的なキャストをしたほうがいいこともある。
この場合はキャストなんかせず、定数を明示的にfloat型で書けばいい。

585 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:39:04 ]
定数の1は整数型だが、実数に変換しても何にも問題ないので
int a = 1;
float b = 1;
double c = 1;
としてしまうなぁ。
# ただし、float b = 1.0としてしまうとdouble値からfloat値からのキャストになるのでコンパイラによっては巧くないね。

586 名前:デフォルトの名無しさん [2008/03/08(土) 22:09:18 ]
>584-585
早速のレスありがとうございます。
よく分かりました。

>この場合は、その他。
>実数の1.0という値は、double型でもfloat型でも桁落ちも丸め誤差もなく正しく表現で>きる。

そう思っていたのに何故そこまでこだわるのだろうと思っていたら、
定数の型のことを言っていたんですね。




587 名前:デフォルトの名無しさん [2008/03/08(土) 22:20:53 ]
マルチスレッドのプログラムでSTLは使えないと聞いたのですが、本当ですか?
あと、_PTHREADSをdefineすれば使えるとも聞いたのですが、、、
googleしても、結構昔の情報が多くて実際のところはどうなのかよく分かりませんでした。


588 名前:デフォルトの名無しさん [2008/03/08(土) 22:23:39 ]
FedoraとWindowsでソースレベルで100%互換のアプリケーションを
作ろうとしているのですが、現実的ではないでしょうか?
またどの辺に気をつけて開発した方が良いでしょうか?

内容は不特定多数のPCとsocket通信でバイナリデータをやりとりし、
内部でPostgreSQLにアクセスする、いわゆるサーバアプリケーションです。

開発はほぼ全面的にWindows側(VisualC++.net2003)で行い、
1日2度程、Fedoraでも動作テストをする予定です。

589 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:56:48 ]
>>587
そういうときは、闇雲にググるのではなく、
自分の使っているライブラリのマニュアルを読め。

例えば、Visual C++もlibstdc++もスレッド安全性についての文書がある。
msdn2.microsoft.com/ja-jp/library/c9ceah3b(VS.80).aspx
gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.thread_safety

590 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:58:30 ]
かつてKylixという開発環境があってですね

591 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:48:11 ]
>>588
完全に.NET上に載せてしまってMONO使うとか。
俺は使ったことないけど

592 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:56:01 ]
一つお伺いしたいのですが,FLVなどの動画をweb上からdownloadし,
てローカルに保存するプログラムを作りたいのですが,
どのようなライブラリを使えばいいのでしょうか?

ライブラリなどなく自分で作るしかないのでしょうか?

593 名前:デフォルトの名無しさん [2008/03/09(日) 04:02:45 ]
ダウンロードするライブラリはあるが、アドレスを発見するライブラリはない

594 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:10:04 ]
レスありがとうございます.
アドレス入力は手動でやろうと思っています.

ダウンロードするライブラリはあるんですね.ありがとうございます



595 名前:デフォルトの名無しさん [2008/03/09(日) 04:14:05 ]
Youtubeの動画がおいてある場所がわかれば
ZIPやEXEやAVIやMP3を落とすのと同じ
場所がわからなければ無理
動画が見られるアドレスと違う

596 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 05:39:49 ]
祭りらしい

【ひめはじめ】その7
venus.bbspink.com/test/read.cgi/megami/1204907313/
【ひめはじめ】その8
venus.bbspink.com/test/read.cgi/megami/1204919740/



597 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 09:17:25 ]
>>588
ソケット通信をどうにかする必要がある。
WindowsとPOSIXで似て非なるAPIを持っているから、
自分でラップするなり既存のライブラリを使うなりしないといけない。

598 名前:デフォルトの名無しさん [2008/03/09(日) 09:51:30 ]
先にSTLについて質問したものです。
教えてもらったファイルとかを見てみたのですが、マルチスレッド環境で
std::cout に何かを書き出す時、いちいちロックをとらないとだめなようですが、
ロックの必要ないcout相当のものはないでしょうか?
自分でinline関数を作ってつかうようにはしたのですが、、


599 名前:デフォルトの名無しさん [2008/03/09(日) 10:33:05 ]
ごめんマクロだった
boost::mutex mutex_io;
#define safe_cout(m) { \
boost::mutex::scoped_lock lock(mutex_io); \
m \
}
int main() {
safe_cout(
std::cout << "hello" << std::endl;
);
こんな感じ。

600 名前:デフォルトの名無しさん [2008/03/09(日) 11:39:46 ]
頭がこんがらがってきたのですが、
クラスmyclassの大きさをnバイトとして、次のように定義すると、
myclass *A;
A = new myclass[x];
myclass B[x];
sizeof()の戻り値が
n ← sizeof(myclass),sizeof(*A),sizeof(*B)
4 ← sizeof(A)
x*n ← sizeof(B)
となるわけですが、AとBにはどういう違いがあるんでしょうか

601 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:45:03 ]
配列とポインタの違い。

ちなみにsizeof (*B)は、Bが配列型→ポインタ型への変換を受けた後、
それに単項*演算子を適用しているので、B型のインスタンスをsizeofにかけていることになる。


602 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:56:08 ]
Aはポインタ型(配列の先頭を指す)
Bは配列型(値は配列の先頭を指すポインタ)
ってことでしょうか
両方A[0].xとかB[1].xでクラスのメンバ変数xにアクセスできるので、
イマイチ区別が付きませんでした



603 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 12:13:17 ]
配列型のインスタンスは、原則として式の中でその先頭要素を指すポインタに変換される。
(sizeof Bのように直接sizeofの演算対象にするのはその例外の1つ)
それで、[]演算子は常にポインタを対象にしている。

このページの中程にそういう話がある。
kmaebashi.com/programmer/pointer.html

604 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 12:32:06 ]
cout << Bでどう考えてもBがポインタだったのは、
自動で変換されていたためでしたか
そのページを参考に基本的な部分を整理しようと思います
ありがとうございました

605 名前:デフォルトの名無しさん [2008/03/09(日) 17:48:09 ]
これの直しかたわかりませんか?
コンパイル時にアットマークがついてしまいます

Error 42: Symbol Undefined _WSACleanup@0

606 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:58:46 ]
それはstdcall関数の仕様。
@がどうとか関係ないから、ws2_32.libか何かをリンクしろ。



607 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:03:44 ]
C++の入門書のお勧めは?

608 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:04:43 ]
accelerated C++

609 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:12:41 ]
>>607
猫でも分かるC++言語プログラミング

610 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:05:34 ]
>>608
そ・れ・は・な・い

611 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:22:02 ]
>>610
え、そうなの?
>>608見てアマゾンに注文したばかりなんだけど。

612 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:29:54 ]
>>611
評判はとてもいいのですが
入門向きでは無いだろあれw

C++が初めてで、他になにかやってたってとかならまだいいんだろうけど

613 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:30:27 ]
>>611
読む価値は非常に高い良書。
ただ入門書を探してる人のレベルによっては
難しいと感じるかもしれないというだけのこと。
いずれ読むべきだから買っておけ。

614 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:42:41 ]
JavaやC#でいうところのInterface的なものを真似る場合
class IHogeの中に実装があってもいいのでしょうか?

615 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:48:02 ]
実装があるならabstractクラスを真似るべきじゃね

616 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:57:55 ]
多重継承最強!



617 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:06:06 ]
>>614
「真似る」のなら駄目
C++的にIHogeの中に実装があってもいいかどうかは別ね

618 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:25:57 ]
accelerated c++ はベターCでなく C++ らしいやり方で進めてるところが好き

619 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:30:02 ]
いずれ読むべきという点で「C++の設計と進化」をお勧(ry

620 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:17:51 ]
独習C++やらロベールやら色々あるから
本屋でとりあえず立ち読みでもしてみれ。
ネットでポチっと買うと合わなかった時悲惨。

621 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:42:18 ]
現行規格とはずれているがARMの内容は秀逸。

622 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:53:59 ]
今のところ、入門に向いてるのは609の
猫でも分かるC++言語プログラミングだけだなw

>>607
「猫でも〜」は本買った方がいいけど(著者にとって)、webでも見れるよ。
www.kumei.ne.jp/c_lang/howto.htm

623 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:02:50 ]
じゃあ一発

これならわかるC++ ブルーバックス版

624 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:04:46 ]
>>614
それなんてCOM?

625 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:05:50 ]
猫でもを妙に推している人がいるな。
本人なのか、信者なのか。

626 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:08:18 ]
猫でもわかるシリーズにC++編はないわけだが



627 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:10:15 ]
ググったら確かに。書籍化されてるのは C だけだな。
じゃあ本人ではないなw

628 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:10:15 ]
webにはちょっとあるけど全然使えない






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

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

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