■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part13
501
名前:
デフォルトの名無しさん
:02/12/09 14:11
>>495
「実体」というのは実行時に定まるものだから、コンパイル時に決定するのは無理だ。やるなら、
template<typename Cont, typename Func>
void for_each_c( Cont& c, Func f ) { std::for_each(c.begin(), c.end(), f); }
を常にかますようにして気をつける、程度だろうねぇ。
502
名前:
デフォルトの名無しさん
:02/12/09 14:47
>>498
なるほど、解説どうもです。
Winsockをいかに使うかが味噌なんですね。
UNIXだとsocketをうまく使いこなせと。。。
503
名前:
デフォルトの名無しさん
:02/12/09 16:40
C++おもしろいあげ
504
名前:
デフォルトの名無しさん
:02/12/09 16:53
boostでSocketライブラリの実装が始まってるね。
かなーり、期待してます。
505
名前:
デフォルトの名無しさん
:02/12/09 17:57
えっsocketライブラリって標準であるようなものじゃないの?
506
名前:
デフォルトの名無しさん
:02/12/09 18:30
>>505
仕様書でも見れば。
507
名前:
デフォルトの名無しさん
:02/12/09 19:50
g++のコンパイル結果のオブジェクトコードが,
gccでのオブジェクトコードに対して大きくなりすぎて困っています.
オブジェクトコードが小さくなる様に,
コンパイルする方法ってあるでしょうか?
パソコン初心者板総合質問スレッドVol.235から
誘導されてきました.
508
名前:
デフォルトの名無しさん
:02/12/09 19:55
gcc, g++ で
int main(){}
をコンパイルしてみた
-rwxr-xr-x 1 tohkubo tohkubo 13548 Dec 9 19:53 g++.out*
-rwxr-xr-x 1 tohkubo tohkubo 13298 Dec 9 19:53 gcc.out*
確かにg++の方が大きいな(w
509
名前:
507
:02/12/09 20:15
>>508
私の環境だと,g++.outが 60kB, gcc.out 24kBになります.
実際にコンパイルする必要があるプログラムでは,
サイズに10倍以上の差が開くのですが,
NFSでファイルサーバ上でコンパイルするため,
この差がコンパイル速度に致命的な影響を与えます.
/tmp/は容量が少なすぎて,オブジェクトコードを格納するのに足りません.
510
名前:
デフォルトの名無しさん
:02/12/09 20:31
>>509
#include <iostream>とかすると、それだけで膨大な量の継承をリンクするので
大きくなるぞ。だから、小さくしたければC++標準ライブラリをできるだけ使わない
ようにするしかない。
511
名前:
508
:02/12/09 20:37
ちなみに strip かけるとこうなる。
-rwxr-xr-x 1 tohkubo tohkubo 3244 Dec 9 20:33 g++.out*
-rwxr-xr-x 1 tohkubo tohkubo 2972 Dec 9 20:33 gcc.out*
でもコンパイル速度じゃぁ strip 意味無いねぇ。
# なんか user 名を晒してしまった事に今更気付いた・・・
512
名前:
デフォルトの名無しさん
:02/12/09 20:37
コンパイルオプションに -g 付けてると
gcc より g++ の方が大きくなるよ
513
名前:
デフォルトの名無しさん
:02/12/09 20:39
ソケットライブラリって・・・I/Oストリームのクラス階層に組み込んだりするんだろうか。
basic_socketstreambuf とか basic_isocketstream とか・・・
UDPはダメか。
514
名前:
デフォルトの名無しさん
:02/12/09 20:41
gccでもコンパイル出来るプロジェクトならgcc使っとけ
515
名前:
508
:02/12/09 20:43
strings の結果を diff とってみますた
/lib/ld-linux.so.2
__gmon_start__
-libc.so.6
+libstdc++-libc6.2-2.so.3
+_DYNAMIC
+_init
__deregister_frame_info
+_fini
+_GLOBAL_OFFSET_TABLE_
+__register_frame_info
+libm.so.6
_IO_stdin_used
+libc.so.6
__libc_start_main
-__register_frame_info
+_edata
+__bss_start
+_end
GLIBC_2.0
PTRh
>>512
今は -g は関係無いかと。
# って俺のやってる所もかなり関係無いに近いけど(w
516
名前:
デフォルトの名無しさん
:02/12/09 20:45
RTTIの情報が入っているのかなあ。
517
名前:
507
:02/12/09 20:51
>>510
CからC++に乗り換えた理由がSTLだったので,
標準ライブラリできるだけ使わないというのは,
何だか哀しい気分です.
>>511
stripしたら1/6以下に小さくなりました.
コンパイル後にstripで小さく出来るんなら,
コンパイラが吐くファイルを直接小さくして
おく事は可能なはずですね.
何か余計なオプションつけてるんですかね.
518
名前:
デフォルトの名無しさん
:02/12/09 20:52
>508
バイナリサイズを比較するなら static link にしないと、意味がないような。
519
名前:
デフォルトの名無しさん
:02/12/09 20:53
>517
> コンパイラが吐くファイルを直接小さくして
> おく事は可能なはずですね.
んなわけない。
オブジェクトファイルからシンボル名を消し去ったら、どうやってリンク時に名前を
解決するのやら。
520
名前:
507
:02/12/09 20:55
>>512
-gオプションはつけてないです.
521
名前:
507
:02/12/09 20:56
>>519
なるほど.
522
名前:
デフォルトの名無しさん
:02/12/09 21:27
>>509
> NFSでファイルサーバ上でコンパイルするため
これがそもそも間違い。コンパイラを動かしてるローカルマシンに
ビルド環境を構築すべし。CVS などのソース管理ツールを使って、
リポジトリはファイルサーバーに置いて共有するようにすれば、
バージョン管理もできて一石二鳥だ。
523
名前:
508
:02/12/09 21:32
>>518
イヤ、オイラのはただのお遊びなので・・・
リンク情報とかチョット違うゼって、それだけのお話でございまして・・・
重箱の隅をつついて遊んでるだけでござりますれば・・・
524
名前:
507
:02/12/09 21:43
>>522
一般ユーザーなので,ローカルマシンへの書き込み権限は
/tmp/しかないのですが,/(/tmp/)に割り振られている
ディスク容量は何故か13MB程度しかありません.
(ハードディスク全体では4GBあるのに..)
ちなみに使ってるマシンはCOMPAQのalpha系CPUで,
Digital UNIXが入ってます.
システム構築したのは確か,COMPAQの方々だったと思いますので,
なんで13MBにしたのか,というツッコミはしないで下さい.
525
名前:
デフォルトの名無しさん
:02/12/09 21:49
>>507
何故素直にホームディレクトリを使わないの?
もしホームが一杯なら NFS の方にホームにあるいらなそうなファイル群を移
したらダメなん?
まぁそれがダメなら NFS に直吐きもやむなしですなぁ。
526
名前:
507
:02/12/09 21:57
>>522
何故なら,/homeへの書き込み権限が無いからです.
527
名前:
デフォルトの名無しさん
:02/12/09 22:15
>522
ファイルがローカルか NFS サーバ上かで、コンパイル時間にそれほど差が
出るかねぇ……。ウチは NFS のサーバ上にホームディレクトリ置いてあって、
そこで作業してるけど、それほど困ってないぞ。
>507
ファイルサーバーの性能が足りんか、キャッシュ周りのパラメタチューニングが
イマイチか、ネットワーク混みすぎてるんじゃないのか? どっちにしても gcc
で云々するよりは、ネットワーク管理者捕まえるのが正道と思われ。
528
名前:
デフォルトの名無しさん
:02/12/09 22:32
つーか/tmpが13Mってかなりヤバくないか?
529
名前:
507
:02/12/09 22:32
>>527
NFS上でコンパイルした場合に一番時間がかかるのが,
ldの実行部分なのですが,小さいファイルで
/tmpとNFS上ででldの実行時間を比較すると,
/tmpの方が圧倒的に早かったです.
>ネットワーク管理者捕まえるのが正道と思われ。
ネットワーク管理者に聞いてみることにします.
530
名前:
507
:02/12/09 22:33
>>528
でもメモリは2GBあります.
不思議
531
名前:
デフォルトの名無しさん
:02/12/09 22:41
>>530
メモリは全然関係ないだろ。
532
名前:
デフォルトの名無しさん
:02/12/09 22:43
>>527
データを 1 バイトくらいでちょこっとずつ読み書きしようとすると、NFS は速度が
ガタ落ちしたと思ったが。
533
名前:
507
:02/12/09 22:46
>>531
ハードディスクは逼迫(ひっぱく)してるのに,
メモリは余裕という意味で書きました.
C++と関係なくなってきましたね.
534
名前:
507
:02/12/09 22:53
>>532
gccのldはg++のldに対して,NFSでも非常に早かったので,
gccとg++で違うldを使ってるって事でしょうか.
それとも,gccとg++で,ldに渡すデフォルトの
オプションが違うとか?
535
名前:
デフォルトの名無しさん
:02/12/10 01:24
g++でコンパイルするとcrt0がC++版になる
と嘘を言ってみる
536
名前:
Stroustrup FAQ!
:02/12/10 19:12
http://www.research.att.com/~bs/bs_faq.html
537
名前:
bloom
:02/12/10 19:12
http://www.agemasukudasai.com/bloom/
538
名前:
デフォルトの名無しさん
:02/12/10 20:58
このスレの450ですが・・・
http://pc3.2ch.net/test/read.cgi/tech/1018657457/l50
(451のレスは無視してください。コピペミスです)。
実行すると原因不明なエラーが出たので閉じると言われます。
原因がワカリマセンで、困っています。
助けてくだしい・・・c++歴一週間です。
教えて君はむかつくだろうと思いますが、何卒よろしゅうたのんます。
539
名前:
デフォルトの名無しさん
:02/12/10 21:11
>>538
# 何のコンパイラを使ってるかくらいは書いた方がいいぞ。
多分 int (たぶん4Byte) * 1000000個 = 4MB もローカル変数に
割り当てられなくて死んでいるのだろうから、
・static を付ける
・グローバルにする
・new で動的に確保
のどれかをすれば解決する。
540
名前:
538
:02/12/10 21:13
>>539
ありがとうございます。
よくわかりませんが本を読んで勉強してみます。
コンパイラは・・・VC++って書けばいいのかな?
ちなみにintは4バイトです。
541
名前:
538
:02/12/10 21:21
>>539
とりあえずint型の変数を全部グローバルに定義したら
計算はしてくれました!!!(速度はVBよりも遅かったですが・・・)。
ありがとうございます!!!更に勉強する気になった!!!
542
名前:
デフォルトの名無しさん
:02/12/10 21:22
>>538
バグとは関係ないところでいろいろあるが
>for(j=2*i;j<=l;j++){
>if(j%i==0){
>p[j]=0;
これはないだろ。そんなわけでちょっとかえてみた
#include <iostream>
#include <fstream>
#include <cmath>
const max=10001 ;
main() {
bool p[max];
int k=int(std::sqrt((double)max));
std::ofstream fout("素数.txt");
for(int i=2;i<max;i++) p[i]=true ;
for(int i=2;i<=k;i++) if(p[i]) for(int j=2*i;j<max;j+=i) p[j]=false ;
int c=0 ;
for(int i=2;i<max;i++) if(p[i]){
fout << i << '\n';
c++ ;
}
std::cout << "素数は全部で" << c << "個です" << '\n';
fout.close();
}
543
名前:
デフォルトの名無しさん
:02/12/10 21:41
> 速度はVBよりも遅かった
・・・一体何をしたらそんな事になるの?
544
名前:
デフォルトの名無しさん
:02/12/10 21:59
> 速度はVBよりも遅かった
ワロタ
545
名前:
デフォルトの名無しさん
:02/12/10 23:32
ヽ(・∀・)ノ
VB>>>>>>>>>>>>>>>>>>>>>>>>>>VC
546
名前:
538
:02/12/10 23:57
>>542
速い!!!
それだ同じアルゴリズムなのにしこたま速い!!!
驚いた!!!これがCの凄さの一つか!!!
>>545
うんこ
547
名前:
デフォルトの名無しさん
:02/12/11 00:35
>>546
うんこはおまいのソースコード
↓これを解説してくれよ
> 速度はVBよりも遅かった
548
名前:
デフォルトの名無しさん
:02/12/11 00:43
>>546
素数を求めるのでしたら、エラトステネスの篩という方法を
試してみては?
549
名前:
デフォルトの名無しさん
:02/12/11 00:44
>>548
ええ。それをしているのですが。
550
名前:
548
:02/12/11 00:47
>>549
失礼!ソース読んでなかった。
551
名前:
デフォルトの名無しさん
:02/12/11 01:38
(´-`).。oO(タイトルのC++って一体・・・)
552
名前:
デフォルトの名無しさん
:02/12/11 01:59
何が問題?
553
名前:
デフォルトの名無しさん
:02/12/11 02:04
例えばstd::bitsetとか使え。
554
名前:
デフォルトの名無しさん
:02/12/11 02:27
(´-`).。oO(std::bitset使わなければC++ではないと。。。)
555
名前:
デフォルトの名無しさん
:02/12/11 02:29
素数格納するのに、bitset と set ではどっちが効率いいんだ?
556
名前:
デフォルトの名無しさん
:02/12/11 03:22
(´-`).。oO(変なのが来たな。。。)
557
名前:
デフォルトの名無しさん
:02/12/11 03:54
(´-`).。oO(何か粘着君が一人居て嫌だな。。。)
558
名前:
デフォルトの名無しさん
:02/12/11 04:16
>551-557
( ´д)ヒソ(´д`)ヒソ(д` )
559
名前:
引き篭もり
:02/12/11 14:27
あらやだあの人引き篭もりじゃないの?
( ´д)ヒソ(´д`)ヒソ(д` ) ほんとよね
最近は変な人増えたものねぇ。
560
名前:
デフォルトの名無しさん
:02/12/11 18:45
std::valarrayでMatrix計算はできますか?
561
名前:
デフォルトの名無しさん
:02/12/11 19:01
>>560
出来ますけど面倒です。std::valarrayは一次元配列に最適化されています
ので、二次元以上の配列を扱うのが下手です。
二次元配列と見なしてアクセスするにはstd::slice、二次元以上の配列には
std::gsliceをstd::valarrayに適用すればよいが、面倒。
562
名前:
560
:02/12/11 19:08
m(_ _)mサンクスです。
563
名前:
デフォルトの名無しさん
:02/12/11 20:18
標準C++のstd::valarrayは糞だから、Blitzでも使えばどう?
http://www.oonumerics.org/blitz/download/
564
名前:
デフォルトの名無しさん
:02/12/11 21:16
カンマ演算子のオーバーロードなんて初めて見たよ・・・
565
名前:
デフォルトの名無しさん
:02/12/11 21:27
>>564
ちょっと思いつかないんだが、どういう風に使われてる?
566
名前:
564ではないが
:02/12/11 21:39
>>565
行列の値設定
m =
1, 2, 3,
4, 5, 6,
7, 8, 9;
とか。
567
名前:
デフォルトの名無しさん
:02/12/11 21:42
プロトタイプはどう書くの?
組み込み型のオーバーロードってできないんじゃ?
568
名前:
デフォルトの名無しさん
:02/12/11 21:53
class array;があるとして
array &array::operator=(int);
array &array::operator,(int);
みたいになってるから組み込み型は関係ない
569
名前:
デフォルトの名無しさん
:02/12/11 21:54
>>567
たぶん、カンマ演算子は = より優先順位が低いので
a = b, c は (a = (b , c)) でなくて ((a = b) , c) と解釈される
ことを忘れていると思われ。
570
名前:
デフォルトの名無しさん
:02/12/11 21:55
ああ、そういう事か。理解した。
571
名前:
デフォルトの名無しさん
:02/12/11 22:51
>>567
> 組み込み型のオーバーロードってできないんじゃ?
話題とは関係ないけど、逆にこれを利用して組み込み型と
ユーザ定義型を見分けるtemplateってのを見つけたよ。
かなりトリッキーだけど。
572
名前:
デフォルトの名無しさん
:02/12/11 23:32
>566
久しぶりに C++ の深淵を覗いたような……
(落とし穴にはしょちゅうハマってるが)
573
名前:
デフォルトの名無しさん
:02/12/11 23:32
>566
久しぶりに C++ の深淵を覗いたような……
(落とし穴にはしょちゅうハマってるが)
574
名前:
デフォルトの名無しさん
:02/12/11 23:33
>572
,573
aboneユーザでつか?
575
名前:
デフォルトの名無しさん
:02/12/11 23:48
C++で、データを壊さずに配列の動的割り当てのサイズ変更は
どのようにするのでしょうか?
VBでいうと、
Dim a()
Redim a(10)
Redim Preserve a(20)
Redim Preserve a(5)
みたいな処理をしたいのですが・・・
576
名前:
572=573
:02/12/11 23:48
>574
そうです。多重カキコごめん。
577
名前:
デフォルトの名無しさん
:02/12/11 23:56
>>575
特にないので、新しく新規サイズで new[] して、そこに古いデータを
コピーして、古い領域は delete[] する。
配列用のコピー・コンストラクタを作っておくと便利。
std::vector なら resize() メンバ関数を使おう。
578
名前:
デフォルトの名無しさん
:02/12/11 23:57
>配列用のコピー・コンストラクタを作っておくと便利。
意味不明だった。この行はなかったことにしてほしい。
579
名前:
デフォルトの名無しさん
:02/12/11 23:59
すんません・・・。
VB厨なんですが、C++を勉強してまして、質問させてください。
VBだと配列をとりあえず
Dim a() as long
と定義しておいて、後で値を確保しつつ配列の長さを変えることの出来る宣言
ReDim Preserve a (10) as long
ってのがあります。
これと同等なことがC++でできないものでしょうか・・・。
580
名前:
デフォルトの名無しさん
:02/12/12 00:02
>>579
new[]はdelete[]とペアにして使うために、ヒープ領域に配列の大きさを覚えて
おくようになっているので、Cのrealloc()のような事は無理。
新たにnew[]して、転送するしかなかろう。それから、new[]したらデフォルトコンスト
ラクタが呼び出されてしまうので、この事が動作に悪影響を及ぼさないように注意
を払う必要がある。
581
名前:
579
:02/12/12 00:07
>>580
へ?
582
名前:
579
:02/12/12 00:08
あ、575が同じ質問してたのか・・・すみませんでした。
逝って来ます。
583
名前:
デフォルトの名無しさん
:02/12/12 00:08
#include <vector>
C++だととりあえず
std::vector<long> a;
と定義しておいて、後で値を確保しつつ長さを買える
a.resize(10);
とすると良い。
584
名前:
575
:02/12/12 00:08
>>577
やはりコピーしかないのですね。
VBも何気に見えないところでコピーしてるのかな。
ありがと!
585
名前:
デフォルトの名無しさん
:02/12/12 00:09
>>579
組み込みの配列じゃなくて、std::vector をつかえ
586
名前:
デフォルトの名無しさん
:02/12/12 00:09
>>579
組み込みの配列じゃなくて、std::vector をつかえ
587
名前:
デフォルトの名無しさん
:02/12/12 00:52
C++ は何でキーワード renew を用意しなかったんだろう・・・。
588
名前:
デフォルトの名無しさん
:02/12/12 01:04
>587
C++ では配列は見捨てられた存在ですから。おとなしく vector 使いましょう。
589
名前:
デフォルトの名無しさん
:02/12/12 01:04
>587
C++ では配列は見捨てられた存在ですから。おとなしく vector 使いましょう。
590
名前:
デフォルトの名無しさん
:02/12/12 01:12
キーワード renew はないが、renew と呼ぶにふさわしいものはある。
それは placement new だ。
591
名前:
デフォルトの名無しさん
:02/12/12 01:13
なんかエコーがかかってるスレだな
592
名前:
デフォルトの名無しさん
:02/12/12 01:17
Abone使いがいると見える。
593
名前:
デフォルトの名無しさん
:02/12/12 01:21
なるほど、placement newの方がいいかもしれない。
delete[]するとデストラクタが呼び出されてしまうので、転送した後これが動くと
妙な事になる恐れがある。
そこへ行くとplacement newした領域をdeleteしても自動的にはデストラクタを
呼び出さないのでいいかも。
594
名前:
デフォルトの名無しさん
:02/12/12 01:24
>>587
初期のC++には例外が無く、newは0(NULL)を返すことで
エラーを表現できたが、renewは…
595
名前:
デフォルトの名無しさん
:02/12/12 03:39
>>588
。・゚・(ノД`)・゚・。
>>591
その領域の確保には malloc() とか使うの?
あと配列を縮めたい時、どうやってデストラクタ呼ぶの?
renew には、要素が増えた時その分だけのコンストラクタを呼び、要素が減った時には
その分だけのデストラクタを呼び、領域確保は基本的に自動である事を期待したい。
・・・それって結局 vector と似てるけどさ。
>>594
そうか、そういう問題があったのか・・・。
596
名前:
595
:02/12/12 05:12
間違えてる。
>591
は 590 宛て。
597
名前:
デフォルトの名無しさん
:02/12/12 08:27
>>595
> あと配列を縮めたい時、どうやってデストラクタ呼ぶの?
どうやってって、普通に呼べばよいのでは。
598
名前:
デフォルトの名無しさん
:02/12/12 09:18
1 コずつか?
599
名前:
デフォルトの名無しさん
:02/12/12 10:14
y'=x+y, y(0)=1のとき、2段法(k=2)のアダムス・バッシュフォース法を用いてy(1)を求めよ。
なお、hの値と2つめの初期値は、
・h = 0.5, y(0.5) = 1.7974425414
・h = 0.1, y(0.1) = 1.1103418362
・h = 0.05, y(0.05) = 1.0525421928
・h = 0.01, y(0.01) = 1.0101003342
・h = 0.005, y(0.005) = 1.0050250417
・h = 0.001, y(0.001) = 1.0010010003
についてそれぞれ計算すること。
プログラム。
各hについての計算結果と誤差。
計算方法がわかりませんどなたか教えていただけませんか
600
名前:
デフォルトの名無しさん
:02/12/12 10:48
∧_∧∩
( ´∀`)/
___∧__________
先生、質問です。
物凄い初歩的な質問ですみません。ランダムに0から9999
の整数を、(理論的に)等確率で出したいのですが、
for(k=1;k<10000;k++){
(int)i=10000*(float)rand()/(int)RAND_MAX;
}
これでは、(その範囲のものは)出ませんよね。どうしたらよいのでしょうか?
601
名前:
デフォルトの名無しさん
:02/12/12 11:09
AA がズレているので失格
602
名前:
デフォルトの名無しさん
:02/12/12 11:12
>>600
0〜RAND_MAXまでは、(RAND_MAX+1)個の要素があるので、
(RAND_MAX+1)で割るのがよろしいかと。
603
名前:
デフォルトの名無しさん
:02/12/12 11:36
∧_∧∩
( ´∀`)/
___∧__________
>>600
先生、早速ありがとうございます。これから、がんがって、
勉強します。
>>601
(´・ω・`)
604
名前:
デフォルトの名無しさん
:02/12/12 11:43
∧_∧∩
( ´Д`)/
___∧__________
>>602
先生、間違えて、自分にお礼してしまいました。
勉強しても、こういう間違いは直りませんか?
605
名前:
590
:02/12/12 12:10
>>595
いや、renew っていう言葉の意味を考えると VB の ReDim のようなものは
ふさわしくないって言いたかったんだけどな。
っていうか、どう考えても std::vector か、その模倣品しか考えられんから
素直にあきらめた方がいい。
606
名前:
デフォルトの名無しさん
:02/12/12 13:27
昔からヴァカは氏ななきゃ治らない、と申します。
607
名前:
デフォルトの名無しさん
:02/12/12 13:57
>>600
徐々にC++のキャストについても知りましょう。
608
名前:
デフォルトの名無しさん
:02/12/12 15:07
template <class T>
void redim(T *array, unsigned long arraySize, unsigned long newSize)
{
unsigned long copySize = (arraySize > newSize) ? newSize : arraySize;
T *newArray = new T[newSize];
std::memcpy(array, newArray, copySize);
delete[] array;
array = new T[newSize];
std::memcpy(newArray, array, newSize);
delete[] newArray;
}
でいいんでは。VB でも内部的に似たようなことをしているんじゃ?
コンパイルしていないんで動作確認はしてないけど。
unsigned long oldSize = 10;
int *a = new int[size];
unsigned long newSize = 3 でも 20 でも;
redim(a, oldSize, newSize);
で VB と等価かと。
609
名前:
デフォルトの名無しさん
:02/12/12 15:11
あ、std::memcpy の引数が逆だ。
正しくは、それぞれ
std::memcpy(newArray, array, copySize);
std::memcpy(array, newArray, newSize);
610
名前:
exclusiver
:02/12/12 15:50
C++ must be supreme language!
so, I believe firmly it!
611
名前:
gourmet
:02/12/12 18:28
C++ must be chou-creme language!
so, I believe delicious it!
612
名前:
デフォルトの名無しさん
:02/12/12 19:59
>>600
int a[10000];
for(int i=0;i<10000;++i){ a[i]=i; }
std::random_shuffle(&a[0], &a[10000]);
これで a の中身を順番に使えば等確率だけど、どう
613
名前:
デフォルトの名無しさん
:02/12/13 00:55
以下の設計について教えてください。
template <typename X> class AAA {
private:
X mem1;
};
があった時、
class BBB {
private:
AAA<case1> mem1;
public:
};
class CCC {
private:
AAA<case1> mem1;
AAA<case2> mem2;
};
等のように、AAA をメンバ変数と持つようなクラスを設計したいのですが、変数の数が固定されていません。
どのように設計するのが一番スマートなのでしょうか?思いついたのは、AAAの基底クラスを作って、
BBBでvector<AAA_BASE> *mem として、BBBを定義してから、vector<AAA> mem(2)等 のポインタをBBBに渡す
事なのですが。もっとスマートに出来ないでしょうか?
614
名前:
デフォルトの名無しさん
:02/12/13 02:19
Win32SDK のようにキャストがボロボロでるプログラムでも C++ キャストを
使わなきゃいけないかい?
むしろ可読性下がると思うんだけど。
615
名前:
デフォルトの名無しさん
:02/12/13 02:21
> AAA<case1> mem1;
> AAA<case2> mem2;
これがどうして必要なのか知りたいけど。
616
名前:
デフォルトの名無しさん
:02/12/13 08:28
>>614
ボロボロと言っても、実際キャストが必須なのって
GDIオブジェクトのHANDLEと、メッセージ系のLPARAMと
コールバックパラメータのvoid*からの取り出し、
ぐらいでない?最初のは普通C++のクラスでラップするし、
二番目はreinterpret_castした方がわかりやすくていいし、
三番目もstatic_castって書いた方が読みやすいと思う。
あとconst_castが大量に必要になるが、
あれを他のキャストで表現すると余計冗長だし。
617
名前:
デフォルトの名無しさん
:02/12/13 08:39
>>616
const_castなんかどこで使うの?
618
名前:
デフォルトの名無しさん
:02/12/13 09:32
>614
C++ を使ってるのに SDK 直ってのが考えにくいが。だいたい ATL::CWindowImpl
なり何なりのフレームワークを一枚かぶせるでしょ。
C++ キャストに関しては、俺は場合によりケリだなぁ。一行に複数の cast が入る
場合、特に reinterpret_cast + const_cast が必要になる場合とかは、C++ キャス
トだと行が長すぎて却って読みにくくなるから C スタイルキャストで済ませる。
619
名前:
デフォルトの名無しさん
:02/12/13 09:43
static_cast<T>(x) って書くのが長いからって
T(x) と書くのは OK?
620
名前:
デフォルトの名無しさん
:02/12/13 12:19
どこかに整数演算だけで浮動小数点演算をエミュレートしてる C か C++ の
ソースとか落ちてないでしょうか(勉強用)。
621
名前:
620
:02/12/13 12:32
ごめんなさい、検索キーワード工夫すれば見つかるもんですね。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=IEEE+754+&lr=lang_ja
http://www.octave.org/
622
名前:
デフォルトの名無しさん
:02/12/13 13:17
>>618
APIを直で叩くケースが少ないBCBな俺の場合、
旧式キャストは一切使わないなぁ。
可読性も大切だけどコンパイルエラーのほうがもっと大切。
つーかキャストって思ったほど使ってないなぁ。
フォーム2つにつき1回つかう位のペース。
ちなみに手持ちのプログラムで一番大きなものにgrepかけてみたらこんな感じ。
static_cast 3個
dynamic_cast 11個
reinterpret_cast 3個
const_cast 0個
組み合わせたものは0個
おりょ、const_castを一番使っていると思っていたのに我ながら意外な結果が…。
623
名前:
デフォルトの名無しさん
:02/12/13 13:24
>>613
何をやりたいのかわからないけれど、そのコードは明らかに異常。
何か根本的に間違っていると思われます。
まずは何をしたいのか、どうしてそのコードが必要になったのか、書いてみそ。
624
名前:
デフォルトの名無しさん
:02/12/13 13:30
> const_cast 0個
> おりょ、const_castを一番使っていると思っていたのに
ちょとワラタ
625
名前:
デフォルトの名無しさん
:02/12/13 15:57
つーか、わざわざ4つも予約語増やしてキャスト導入した意味ねえだろが。
アフォか。
626
名前:
デフォルトの名無しさん
:02/12/13 16:13
>>625
ネタですか?
それともアフォですか?
627
名前:
デフォルトの名無しさん
:02/12/13 16:22
>>625
gotoがあればbreakなんかいらん、と言っているに等しい発言だな。
628
名前:
デフォルトの名無しさん
:02/12/13 17:22
んー?
625 は、「わざわざ 4 つも予約語増やしたんだからちゃんと使え」 という意味か?
629
名前:
625
:02/12/13 18:13
>>626
意味不明。
>>627
意味不明。
>>628
それに近いな。
630
名前:
626=628
:02/12/13 18:16
>>629
単純に 「4 つも予約語増やして導入した意味なんかない」 という風に取れたんだが。
631
名前:
デフォルトの名無しさん
:02/12/13 18:18
VC6でSTLportを使うときにあるシンボルを定義していると,
cmath等のインクルード時にC標準ライブラリをstd名前空間に
押し込んでくれたように記憶しているのですがどなたかご存知ありませんか。
ドキュメントやstl_user_config.h,_site_config.h等調べてみたのですが
一向にわかりません。
632
名前:
デフォルトの名無しさん
:02/12/13 18:20
template 統合スレのネタだな。
スレ違い。
633
名前:
デフォルトの名無しさん
:02/12/13 18:27
>>630
察するにあなたは関東の人じゃないな
634
名前:
625
:02/12/13 18:27
>>630
そうか。スマソ (ノД゚)
引き篭もりなんで許してくれ。
635
名前:
デフォルトの名無しさん
:02/12/13 18:28
>>632
申し訳ありませんでした。そちらに行ってみます。
636
名前:
630
:02/12/13 18:30
>>633
生まれも育ちも東京都江戸川区ですが何か?
637
名前:
デフォルトの名無しさん
:02/12/13 21:06
インラインが淫乱を連想させて困るのですが何とかなりませんか?
638
名前:
デフォルトの名無しさん
:02/12/13 21:11
もっと乱rていxhgkい
639
名前:
デフォルトの名無しさん
:02/12/13 21:23
回答は日本語でお願いします。
640
名前:
デフォルトの名無しさん
:02/12/14 14:54
I love to play C++ programming!
641
名前:
613
:02/12/15 02:21
長文ですんません。株式売買のシミュレーションっぽい事を行いたいのです。
class 内部自由度1 {};
...
class 内部自由度N1 {};
class トレーダー1{};
...
class トレーダーN2{};
class 全体{};
void func(全体*){}
で内部自由度がN1個あって、N2人のトレーダーが個性を持って、1...N1の内部自由度を適当に持つとします。
N2人のトレーダーが全体クラスに集まって、互いに影響を受けながら関数funcでやり取りを行いたいのです。
トレーダーが持つ内部自由度の個数が色々変わるのでどうしようかと悩んでいます。トレーダークラスに基底クラス(vector<基底内部自由度>持ち)
を作って、継承させてコンストラクタの書き方を変える事でトレーダークラスを作るのがいいかな?と思ったのです。
最終的には、全体クラスにトレーダー以外の人間も入れたいのです。設計がダメダメなのでしょうか?
642
名前:
デフォルトの名無しさん
:02/12/15 02:37
>641
> 設計がダメダメなのでしょうか?
はい。
643
名前:
613
:02/12/15 03:06
そうですか。もう少し考えてみます。
644
名前:
デフォルトの名無しさん
:02/12/15 03:15
自律行動するロボットのシミュレータと似てる?
645
名前:
613
:02/12/15 04:04
そちらの事は知りませんが、異なる内部自由度を持った複数の関節が互いに協調し合って
歩行を実現するシステムなら似ていると思います。
646
名前:
デフォルトの名無しさん
:02/12/15 11:15
独自にクラス作るのが意外と大変なんで
STLか何か使って簡単にプロパティ型出来ませんか?
647
名前:
デフォルトの名無しさん
:02/12/15 11:23
>>646
(゚Д゚) ハァ?
648
名前:
デフォルトの名無しさん
:02/12/15 11:32
>>646
プロパティ型って何?教えて君でスマソ。
649
名前:
デフォルトの名無しさん
:02/12/15 11:32
こんな感じの奴です。
struct A
{
int param1, param2;
public:
class prop
{
A& ref;
public:
Prop(A& a) : ref(a){}
int operator = (int s){ return ref.param1 = s > 0 ? s : 0; }
operator int (int s){ return ref.param1; }
}Prarameter1;
・・・Prarameter2;
};
Get、Setを一つにまとめてシンプルにしたいので。
650
名前:
646
:02/12/15 11:48
>>649
は間違いだらけですが、
ようはSetPrarameter1、SetPrarameter1の動作をまとめて
obj.Prarameter1 = -1;
count << ob.Prarameter1 << endl;
見たいな使い方が出来るようにしたいのです。
651
名前:
デフォルトの名無しさん
:02/12/15 11:51
>646
Cプリプロセッサを使え
652
名前:
646
:02/12/15 12:04
>>651
調べました。__declspec(property)ですね?
ありがとうございまし。
653
名前:
デフォルトの名無しさん
:02/12/15 12:58
reference counter!
654
名前:
デフォルトの名無しさん
:02/12/15 18:23
>>651
C++ では、インクルード・ガード以外、マクロは極力使わないこと。
定数の定義やマクロ関数の定義等はもってのほか。
>>652
__declspec(property) って C++ 言語じゃないんですけど。
やるなら、
TSomeType& Parameter();
というメンバ関数にする。
655
名前:
デフォルトの名無しさん
:02/12/15 20:57
>>654
是非マイクロソフトさんにも言ってあげてください。
656
名前:
デフォルトの名無しさん
:02/12/16 01:36
>654
> TSomeType& Parameter();
それだと問題が全く解決しないと思うが…。プロパティ化したいメンバ変数が一つなら
良いけど、複数あったら NG だよね。
現実的な解としては、マクロ使うのが比較的マシな回答だと思う。他に Loki の Tuple
を使うって手もあるが、あまりお奨めはせん。
657
名前:
デフォルトの名無しさん
:02/12/16 02:12
こんなんどうよ。
// property.h
template<class T, class O, T O::*M>
class property {
O &obj;
public:
property(O &o) : obj(o) {}
property& operator=(const T& x) {obj.*M = x; return *this;}
operator const T&() const {return obj.*M;}
operator T&() {return obj.*M;}
};
658
名前:
デフォルトの名無しさん
:02/12/16 02:12
// proptest.c
#include <iostream>
#include "property.h"
class foo
{
int a;
public:
property<int, foo, &foo::a> x;
foo() : a(0), x(*this) {};
friend ostream& operator<<(ostream &os, const foo &f) {
return os << "foo<" << f.x << ">";
}
};
int main()
{
foo f;
cout << f << endl;
f.x = 10;
cout << f << endl;
}
659
名前:
デフォルトの名無しさん
:02/12/16 02:22
>>658
それ漏れも考えて書こうと思ったけどやめた。
値の範囲チェックとかどうすんのよ?
660
名前:
デフォルトの名無しさん
:02/12/16 02:25
>>657
しかもそれだけでいいのなら
template<class T>
class property {
T obj;
public:
property() : obj(T()) {}
property& operator=(const T& x) {obj = x; return *this;}
operator const T&() const {return obj;}
operator T&() {return obj;}
};
でいいんじゃないか?
661
名前:
デフォルトの名無しさん
:02/12/16 02:29
>>659
これじゃダメ?
class foo
{
int a;
class prop1 : public property<int, foo, &foo::a> {
typedef property<int, foo, &foo::a> super;
prop1& operator=(int s) { if (s < 0) s = 0; super::operator=(x); return *this;}
};
prop1 x;
}
662
名前:
デフォルトの名無しさん
:02/12/16 02:34
>>660
だな。
663
名前:
デフォルトの名無しさん
:02/12/16 08:22
>>660
それだけでいいのなら
property<T> の代わりに T でいいんじゃないか?
#include <boost/bind.hpp>
#include <boost/function.hpp>
template<typename T>
class property {
boost::function<T> getterFunc;
boost::function<void, const T&> setterFunc;
public:
template<typename Owner, typename G>
property( Owner& p, G g )
: getterFunc( boost::bind( g, p ) ) {}
template<typename Owner, typename G, typename S>
property( Owner& p, G g, S s )
: getterFunc( boost::bind( g, p ) )
, setterFunc( boost::bind( s, p, _1 ) ) {}
public:
operator T() const { return getterFunc(); }
property& operator=( const T& rhs ) {
setterFunc( rhs ); return *this;
}
};
664
名前:
デフォルトの名無しさん
:02/12/16 08:55
>>663
思いっきりテンプレートに見えるのは、気のせいか?
665
名前:
デフォルトの名無しさん
:02/12/16 10:59
setX, getX でいいでしょ
なんでわざわざそんな不要なコード書きたがるかね
666
名前:
デフォルトの名無しさん
:02/12/16 11:50
>>665
私はいろいろやって(C++でのプロパティを)諦めた人なので
> setX, getX でいいでしょ
は同意だけど
> なんでわざわざそんな不要なコード書きたがるかね
これ、コボラーの発想だよ。
いいものがあればそれを求める。それが ぷらぷら使いさ。
667
名前:
デフォルトの名無しさん
:02/12/16 12:49
virtual void* Create()=0;
この、末尾の「=0」ってどういう意味?
668
名前:
デフォルトの名無しさん
:02/12/16 12:58
>>667
pure virtual function・・・・・・
669
名前:
デフォルトの名無しさん
:02/12/16 13:15
ヘッダファイル(拡張子が .h)のファイルの中で、こんな一行が
class ISerialize;
ソースの後の方で、ちゃんと
class ISerialize {
public:
..
}
というように、定義されているのですが、最初の方で 「class ISerialize; 」と書く意味がわかりません。
どういう意図があるのでしょう。
これは省略できるのですか。
670
名前:
デフォルトの名無しさん
:02/12/16 13:23
> class ISerialize;
ここから
>class ISerialize {
>public:
>}
までの間で
ISerialize *p ;
とかやったりするため
671
名前:
デフォルトの名無しさん
:02/12/16 13:25
Do you know declaration of class?
672
名前:
デフォルトの名無しさん
:02/12/16 13:41
class ISerialize;
class Test {
class ISerialize& is;
};
class ISerialize {
public:
..
}
673
名前:
デフォルトの名無しさん
:02/12/16 13:45
>>672
class ISerialize;
class Test {
class ISerialize& is;
};
class ISerialize {
public:
Test *t; //ここがなけりゃ意味ないだろ?
}
674
名前:
デフォルトの名無しさん
:02/12/16 13:54
>>673
そうだったスマソ
675
名前:
デフォルトの名無しさん
:02/12/16 14:17
海外サイトで通用しなかった英語を
避難先の日本語サイトでひけらかして何になる? (water
676
名前:
デフォルトの名無しさん
:02/12/16 14:18
>>673
>Test *t;
は参照よりも実体のほうが趣旨に合うと思うが
677
名前:
デフォルトの名無しさん
:02/12/16 14:26
virtual int GetType() const = 0;
これはつまり、サブクラスは必ず GetType() で値を返して、しかも、そのサブクラスのサブクラスでは、GetType() をオーバライドできない、ということでしょうか。
678
名前:
671
:02/12/16 14:27
>>675
うるせー犯すぞ
679
名前:
デフォルトの名無しさん
:02/12/16 14:30
>>677
Effective C++をどうぞ。
680
名前:
デフォルトの名無しさん
:02/12/16 15:07
>>677
サブクラスって意味知ってる?
まあそれはそれとして、純粋仮想関数を一つでもメンバとして持っているクラスは
抽象クラスとなり、インスタンスは作成できない。
かならず継承して、純粋仮想関数をすべてオーバーライドして初めてインスタンス
を作成できるようになる。
681
名前:
デフォルトの名無しさん
:02/12/16 15:11
>>9999
682
名前:
デフォルトの名無しさん
:02/12/16 15:13
>>677
こんな物だと思いたまへ。
class A {
protected:
int i;
int j;
public:
virtual int f() = 0;
int g() { return j; }
};
class B : public A {
public:
int f() { return i; }
};
int main()
{
// A a; // インスタンスは作成できない
B b;
b.f();
b.g();
}
683
名前:
デフォルトの名無しさん
:02/12/16 15:17
純粋仮想関数のメリットって何ですか?
684
名前:
デフォルトの名無しさん
:02/12/16 15:26
>>683
インターフェースと実装を切り離す時に便利。入出力関数が決まっていて、
実装にバリエーションがある時、インターフェース部だけを抽象クラスにして
おいて、一種のテンプレートのようにして使う。
685
名前:
デフォルトの名無しさん
:02/12/16 15:28
ところでこの板、連続書き込みが規制されてない?
今は串を変えて書いてるけど、プロキシ使ってる人は、まとめて規制食らっ
ちゃうよ。
686
名前:
683
:02/12/16 15:29
>>684
ありがとうございます。よく分かりました。
687
名前:
デフォルトの名無しさん
:02/12/16 15:31
void penis_fumble(){ (;´Д`)ハァハァ; }
688
名前:
デフォルトの名無しさん
:02/12/16 15:38
gotcha!
689
名前:
デフォルトの名無しさん
:02/12/16 15:55
>>683
メンバ関数のグループ化と規格化
「○○対応をうたうクラスにはこんな関数セットを用意すること」
690
名前:
デフォルトの名無しさん
:02/12/16 17:52
class A
{
};
class B : public A
{
};
というのがあり、
A* boo(A* obj);
という関数なら、クラスAクラスBのどちらのオブジェクトもとれるのは分かるのですが、
A& boo(A& obj);
なら、Aしか引数,戻り値にすることはできませんか?
691
名前:
デフォルトの名無しさん
:02/12/16 17:58
やってみりゃいいだろ
B b;
A& boo(A& obj)
{
return b;
}
main()
{
boo(b);
}
692
名前:
デフォルトの名無しさん
:02/12/16 17:58
>>690
Bもできます
自分で試すきないの?
693
名前:
690
:02/12/16 18:15
すいません。聞きたかったことを間違えました。
A boo(A& obj)
{
B b = new B();
return b;
}
という場合に、bを返したら、どうなりますか?
外で
B b = (B)boo(obj);
みたいなのはできないんでしょうか?
694
名前:
デフォルトの名無しさん
:02/12/16 18:17
return *b;
695
名前:
デフォルトの名無しさん
:02/12/16 19:58
どうでもいいが激しくわかりづらいソースだな。AとかBとか。
696
名前:
デフォルトの名無しさん
:02/12/16 20:56
>693
実体を基底クラスにキャストするとオブジェクトのスライシング、派生クラス分の
オブジェクトが捨てられて基底クラスに詰め込まれる、が起きる。
ポインタ・参照の場合は(多重継承・仮想継承が絡むと細かいことが色々あるが、
それを忘れれば)何も起こらない。
class Base {};
class Deriv : public Base {}
Base* pb = new Deriv; // OK
特に Base に仮想関数が定義してある場合、pb 経由で仮想関数を呼び出すと
Deriv の関数が呼ばれる。
class Base { public: virtual void foo(); };
class Deriv { public: virtual void foo(); };
Base* pb = new Deriv;
pb->foo(); // Base::foo() ではなく Deriv::foo() が呼ばれる
逆に基底クラスから派生クラスにキャストするのは、実体の場合には論外。ポインタ・
参照の場合には「実はそのポインタ・参照は派生クラスを指している」という場合に限っ
て OK。そうでない場合には、直後にメモリ領域壊すことになる。
Base* pb = new Deriv;
Drive* pd = static_cast<Deriv*>(pb); // OK
Base* pb = new Base;
Deriv* pd = static_cast<Deriv*>(pb); // コンパイルは通るが、直後に惨状が待ち受けてる
っつか、基本事項だから「プログラミング言語 C++」でも買ってきて読んどけ。一から
十まで説明してたら 1 スレ使っても字数が足りんよ。
697
名前:
デフォルトの名無しさん
:02/12/16 20:56
>>666
>> なんでわざわざそんな不要なコード書きたがるかね
>これ、コボラーの発想だよ。
余計なコードを書かないってのは言語を超えた開発の鉄則。
新規コードは最小限に抑えるべし。
念のために言っておくが、変数・関数名を短くしろとか、
改行を惜しめって意味じゃないからね。
無論ひまつぶし等は別だが、その場合はその旨を明記して欲しい。
698
名前:
デフォルトの名無しさん
:02/12/16 21:03
>>697
一人の人も救えないのに世界を救えるはずがないよな!
699
名前:
デフォルトの名無しさん
:02/12/16 22:15
>>698
んなこたーない
700
名前:
698
:02/12/16 22:25
>>699
知ってる
701
名前:
デフォルトの名無しさん
:02/12/16 22:31
>>683
言語に純仮想関数の機構(late binding)があると、
オブジェクト指向プログラミングができるようになる。
702
名前:
デフォルトの名無しさん
:02/12/16 22:32
>>701
・・・・・単なる仮想関数でもそうでしょ?
703
名前:
デフォルトの名無しさん
:02/12/16 22:46
>>701
>>702
うむ。その通りだ。VBもオブジェクト指向プログラミングはできるのだよ。
704
名前:
デフォルトの名無しさん
:02/12/16 23:33
>>701-703
それは仮想ではなく妄想ではないかと・・・
705
名前:
デフォルトの名無しさん
:02/12/16 23:41
>>704
あなたこそ妄想です。
706
名前:
デフォルトの名無しさん
:02/12/17 00:20
ポリモーフィズムできりゃOOPはできる。
(向き不向き存在価値なしはあるにしても)
707
名前:
デフォルトの名無しさん
:02/12/17 01:03
「オブジェクト指向=多態」と思い込んでいる馬鹿がいるな
708
名前:
デフォルトの名無しさん
:02/12/17 06:59
typedef aiueo *kakikukeko;
ってのがよく分かりません。
typedef aiueo* kakikukeko;
のことですか?
709
名前:
デフォルトの名無しさん
:02/12/17 09:06
ソーデース
710
名前:
デフォルトの名無しさん
:02/12/17 11:23
>>703
そらそーだ
ただ、金属バットで家建てようとしているようなもんだけどな
711
名前:
デフォルトの名無しさん
:02/12/17 11:30
//文字列でNULLがないときってやばくない?
struct OOO
{
char c[4];
char j;
};
#include<iostream>
#include<string>
#define print(x) std::cout << (x) <<std::endl;
int main()
{
OOO nn = {'3','3','3','3',22};
print( sizeof( nn.c ) );//4
print( strlen( nn.c ) );//11
std::string BadStr= nn.c;
print( BadStr );//3333???????
std::string TrueStr = BadStr.substr(0,(strlen(nn.c) > sizeof(nn.c) ? sizeof(nn.c) : strlen(nn.c)));
print( TrueStr );//3333
}
712
名前:
デフォルトの名無しさん
:02/12/17 11:32
>>708
kakukikeko は aiueo へのポインタってこと。
aiueo を *kakikukeko であらわせるなら、
&aiueo は kakikukeko でしょ?
aiueo a;
kakukikeko k;
k = &a;
713
名前:
デフォルトの名無しさん
:02/12/17 11:33
>>711
当たり前だろ。
714
名前:
666
:02/12/17 12:58
>>697
> 余計なコードを書かないってのは言語を超えた開発の鉄則。
ま た Y A G N I か
715
名前:
デフォルトの名無しさん
:02/12/17 15:29
クラスローカルな定数って定義できます?
class MyClass{
const int err = 1;
}
はできませんでした。
716
名前:
デフォルトの名無しさん
:02/12/17 15:45
>>715
こういうのはどう鐘。
class MyClass{
static const int err;
}
const int MyClass::err = 1;
717
名前:
デフォルトの名無しさん
:02/12/17 15:52
>>715
enum使っとけ。
718
名前:
デフォルトの名無しさん
:02/12/17 15:59
class MyClass{
static const int err = 1;
}
なら可能(整数だけだが)。できないコンパイラはヘタレ。
719
名前:
デフォルトの名無しさん
:02/12/17 16:02
>>714
つまり、度々無駄なコードを書いては先輩や上司から叱責されていると?
720
名前:
デフォルトの名無しさん
:02/12/17 17:31
>>715
確かにえなーむが妥当
721
名前:
デフォルトの名無しさん
:02/12/17 19:20
class MyClass{
const int err;
}
MyClass::MyClass() : err(1) {
}
722
名前:
デフォルトの名無しさん
:02/12/17 23:35
セミコロンを忘れずに・・・
723
名前:
721
:02/12/18 00:57
>>722
正直、すまんかった。
浮気性なもんでJava子や#子の癖が出るんでね。
class MyClass{
const int err;
};
MyClass:MyClass() : err(1){
}
724
名前:
デフォルトの名無しさん
:02/12/18 08:47
>>723
こんどはコロンが一つ…
725
名前:
デフォルトの名無しさん
:02/12/18 10:35
コンロも一つ
726
名前:
デフォルトの名無しさん
:02/12/18 10:53
蝉を退治する殺虫剤で「セミコロン」とか作ったら面白いよね。
727
名前:
デフォルトの名無しさん
:02/12/18 10:58
(゚Д゚)ハァ?
728
名前:
328
:02/12/18 11:12
>>726
オレはオマエのほうが面白いと思うがどうか。
729
名前:
デフォルトの名無しさん
:02/12/18 11:14
328 は意味不明だが、728 には同意
730
名前:
デフォルトの名無しさん
:02/12/18 13:46
随分と突飛だな。
731
名前:
デフォルトの名無しさん
:02/12/18 15:24
>>728
面白いというかおっぱいしゃぶりたいよね。
732
名前:
デフォルトの名無しさん
:02/12/18 23:17
void* から非void型への変換のキャストって???
733
名前:
デフォルトの名無しさん
:02/12/19 01:18
???
734
名前:
デフォルトの名無しさん
:02/12/19 01:31
>>732
何がいいたいのかサパーリわからん。
template<typename T>
T void_ptr_to_hoge(void* p)
{
return reinterpret_cast<T>(p);
}
↑でいいのか?
735
名前:
デフォルトの名無しさん
:02/12/19 10:23
void* は非 void 型だよな
736
名前:
デフォルトの名無しさん
:02/12/19 15:31
borland C++ 使ってるんですが
マルチスレッド化のやり方がわかりません。
教えてください 頼みます
737
名前:
デフォルトの名無しさん
:02/12/19 15:53
>>736
WindowsならWin32APIのCreateThreadでいいんじゃない?
738
名前:
デフォルトの名無しさん
:02/12/19 16:12
猫を呼んで来い
739
名前:
デフォルトの名無しさん
:02/12/19 16:22
=⊂(ΦωΦ)⊃
呼んで来ました!
740
名前:
デフォルトの名無しさん
:02/12/19 16:42
。 猫じゃないものがキタぁぁぁぁ!!
。 ∧_∧。゚
゚ (゚ ´Д`゚ )っ゚
(つ / アァァァァ
| (⌒)
し⌒^
741
名前:
デフォルトの名無しさん
:02/12/19 21:57
>>734
static_castじゃないんか?
742
名前:
デフォルトの名無しさん
:02/12/19 22:14
static_cast でいいのか?
reinterpret_cast のが妥当だと思うが・・・。
743
名前:
デフォルトの名無しさん
:02/12/19 22:40
reinterpret_castだよ。
744
名前:
デフォルトの名無しさん
:02/12/19 22:43
C++で作成したアプリケーションについてですが
Spy++とかで確認することができる
クラス名があるじゃないですか。
あれはバイナリ(exe)にはどんな風にして格納されてるんでしょうか?
やりたいことはメインウィンドウのクラス名を
バイナリエディタで書き換えたいのです。
よろしくおながいします(´・ω・`)
745
名前:
デフォルトの名無しさん
:02/12/19 22:46
> Spy++とかで確認することができる
> クラス名があるじゃないですか。
・・・え?
もしかして、ウィンドウクラスの事?
ならスレ違いと言っておこう。
746
名前:
デフォルトの名無しさん
:02/12/19 22:48
>>745
すれ違いでしたか(´-ω-`;)
C++で作られたプログラムということだったので
こちらで質問してしまいました。ごめんなさいです。
もしよかったらどこのスレッドで聞けば
答えてもらえるのかだけでも教えてもらえませんでしょうか。
ほんとすいません・・・。
747
名前:
デフォルトの名無しさん
:02/12/19 23:10
C++ で作られたプログラムだろうが、C++ の事について訊きたいのでなければ
スレ違い。
妥当なのはぱっと思いつかないけど、近そうなのは Win32API スレ、Windows
Programing スレあたりか。
748
名前:
デフォルトの名無しさん
:02/12/19 23:33
>>747
ありがとうございますです。
さっそくそちらのほうに尋ねてみたいと思いまつ(´・ω・`)
749
名前:
デフォルトの名無しさん
:02/12/20 18:54
class Baka
{
friend ostream& operator<<(ostream& os, const Baka& obj);
private:
int aho;
};
として、cppファイルのほうでoperator<<のほうを実装すると、
この関数は、privateにアクセスでききない。と出ます。
クラス宣言の中で、インラインで書いてやると、コンパイル通ります。
コンパイラはVS.NETを使っているのですが、コンパイラの仕様ですか?
何か間違っているのでしょうか?
750
名前:
デフォルトの名無しさん
:02/12/20 19:00
>>749
classのデフォルトのアクセス権はprivateです。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.