C++相談室 part8
- 1 名前:デフォルトの名無しさん :02/06/25 22:06
- (´∀`).。o(関連URLは>>2-5の辺り)
- 2 名前:デフォルトの名無しさん :02/06/25 22:13
- 実数の階乗はガンマ関数ってか?
- 3 名前:v(^▽^)v :02/06/25 22:17
- C++ Final Draft International Standard
http://www.kuzbass.ru/docs/isocpp/
Boost
http://www.boost.org/
STLport
http://www.stlport.org/
Loki
http://www.moderncppdesign.com/
過去ログ
Part1
http://piza.2ch.net/tech/kako/980/980175292.html
Part3
http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4
http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5
http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6
http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7
http://pc.2ch.net/test/read.cgi/tech/1021787032/
- 4 名前:デフォルトの名無しさん :02/06/25 22:18
- v(^▽^)v
Generic Programming with C++ Template
http://pc.2ch.net/test/read.cgi/tech/1008593126/
●STL スレッド●
http://pc.2ch.net/test/read.cgi/tech/1004287394/
Windowsの話はこちらで
Win32API 質問箱 Build4
http://pc.2ch.net/test/read.cgi/tech/1023361418/
■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/
- 5 名前:デフォルトの名無しさん :02/06/25 22:26
- ■関連スレ■
VisualC++相談室 3
http://piza2.2ch.net/tech/kako/993/993186053.html
VisualC++相談室 4
http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
VisualC++相談室 5
http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
VisualC++相談室 6
http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
VisualC++相談室 【7】
http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
VisualC相談室 【8】
http://pc.2ch.net/test/read.cgi/tech/1022499000/
- 6 名前:デフォルトの名無しさん :02/06/25 22:27
- 乙カレー
- 7 名前:デフォルトの名無しさん :02/06/25 22:28
- >>2
過去ログとか書き終わるまで、まてよ
- 8 名前:v(^・^)v :02/06/25 22:30
- v(^・^)v
- 9 名前:shige :02/06/25 22:32
- v(^・^)v ←むかつく
- 10 名前:デフォルトの名無しさん :02/06/25 22:34
- v(^・^)v ←なんすかこれ
- 11 名前:デフォルトの名無しさん :02/06/25 22:35
- もうC++スレいらないって言っただろ
何で立てるんだよ?
- 12 名前:デフォルトの名無しさん :02/06/25 22:35
- >>10
俺の顔
- 13 名前:v(^・^)v :02/06/25 22:35
- v(^・^)v delete >>11;
- 14 名前:デフォルトの名無しさん :02/06/25 22:36
- >>11
お前が見なけりゃいいだけ
- 15 名前:デフォルトの名無しさん :02/06/25 22:37
- ドイツ強いな。
fstream系のコンストラクタってなんでワイド文字バージョンが
ないのだろう。変換が面倒くさい。
- 16 名前:デフォルトの名無しさん :02/06/25 22:38
- destroy(>>11);
- 17 名前:デフォルトの名無しさん :02/06/25 22:39
- SendMessage(>>11, WM_ITTEYOSHI, 0, 0);
- 18 名前:デフォルトの名無しさん :02/06/25 22:44
- if (msg.sender == >>17)
reject();
- 19 名前:デフォルトの名無しさん :02/06/25 22:45
- if (>>11->temminate())
>>11->deallocate();
- 20 名前:デフォルトの名無しさん :02/06/25 22:46
- terminate()だった。逝ってきます・・・・
- 21 名前:デフォルトの名無しさん :02/06/25 22:54
- void >>11::OnDeallocate()
{
for (;;)
new >>11;
}
- 22 名前:デフォルトの名無しさん :02/06/25 22:57
- void >>11::>>11()
{
this->execute("マンキン.exe");
}
- 23 名前:デフォルトの名無しさん :02/06/25 22:57
- >>22
Syntax error
- 24 名前:デフォルトの名無しさん :02/06/25 23:07
- >>23
たしかに>>22はvoidが不要だった。コンストラクタのつもり。
オブジェクトを生成しようとすると、マンキン.exeが実行され、
HDDがあぼ〜んする。
- 25 名前:デフォルトの名無しさん :02/06/25 23:09
- >>1 乙カレー
Lokiをリンクに入れるのならここもリンクに入れてくれ。
LokiをVC7に移植したLokiPort
http://www.geocities.com/rani_sharoni/LokiPort.html
- 26 名前:デフォルトの名無しさん :02/06/26 00:30
- C++の参照について質問です。
void A(char **a,char **b){
*a="a";
*b="b";
}
main(){
char *a,*b;
A(&a,&b)
というように、2つの値を返したい関数があるのですが、
これを参照を使おうと思って、
void A(char &*a,char &*b)
としてみましたが、
エラー:参照型へのポインタあるいは参照は定義できない
と言われてしまいました。やりたいのは参照型へのポインタではなく、ポインタへの参照
だと思うんですけど、どう書いたらいいのか教えてください。
- 27 名前:デフォルトの名無しさん :02/06/26 00:32
- void A(char*& a, char*& b)
- 28 名前:デフォルトの名無しさん :02/06/26 00:37
- istreamからvectorに内容をコピーするとき、
istream_iterator<char> i(f), e(f);
advance(e, 15);
copy(i, e, back_inserter(v));
とやってみても一切読み込めません。
指定サイズを読み込む方法って無いんですか?
- 29 名前:助けてください :02/06/26 00:39
- 教科書に
#include"compati.h"
とあったので書き込むと
fatal error C1083: インクルード ファイルがオープンできません。'compati.h': No such file or directory
と出て来ます。
これは何者なんですか?
ほんとのド素人です
- 30 名前:デフォルトの名無しさん :02/06/26 00:42
- >29
勘だが、その教科書の前のほうにそのファイルが定義されている
- 31 名前:デフォルトの名無しさん :02/06/26 00:43
- ってゆーか、他の人の方が効きたいんじゃないか>これは何者なんですか?
- 32 名前:助けてください :02/06/26 00:44
- includeの中身を” ”でくくるっていうのはどういうことなんですか?
- 33 名前:デフォルトの名無しさん :02/06/26 00:45
- >32
先に近所を読む
- 34 名前:助けてください :02/06/26 00:47
- それが教授からコピーしか貰ってないから前後が無いんですわ
- 35 名前:デフォルトの名無しさん :02/06/26 00:48
- その答えはK&Rに。
- 36 名前:デフォルトの名無しさん :02/06/26 00:48
- >>27
できました!
ありがとうございます。
- 37 名前:デフォルトの名無しさん :02/06/26 00:49
- 教授にそのことを言うか、同じ本を探すか、ですなぁ?
- 38 名前:助けてください :02/06/26 00:51
- そうですか・・
- 39 名前:助けてください :02/06/26 00:52
- ちなみに「先に近所を読む」ってどういう意味です?
- 40 名前:デフォルトの名無しさん :02/06/26 00:52
- compati.hについて書かれてないのならお手上げですな。
ファイル自作してエラーメッセージを見れば、あるいは内容を推測
出来るかも知れん。
- 41 名前:デフォルトの名無しさん :02/06/26 00:53
- stdio.hとかがあるところを読む前に、自分が作業している
ディレクトリを探すってこと。たいてい標準的なのは<>で囲み、
自分たちがつくったファイルをインクルードするときは""で
囲む
- 42 名前:デフォルトの名無しさん :02/06/26 00:54
- 教授を小一時間、問い詰めろ。
- 43 名前:助けてください :02/06/26 00:56
- プログラムが80行あるんで順番に書き込んでみてもらってもいいですかね?
- 44 名前:デフォルトの名無しさん :02/06/26 00:56
- >>28
input iteratorからcopyでは無理。素直にforループを書く。
と思う
- 45 名前:デフォルトの名無しさん :02/06/26 00:57
- まあ、いいんでない?
- 46 名前:デフォルトの名無しさん :02/06/26 00:58
- そうだな
まだスレの初めだからいいだろう。
- 47 名前:助けてください :02/06/26 00:59
- #include<stdio.h>
#include"compati.h"
#define M 5 /*機会の台数*/
#define N 2 /*修理者の人数*/
#define A 10.0 /*平均故障発生感覚*/
#define H 4.0 /*平均修理時間*/
#define DT 0.5 /*時刻増分*/
#define T_END 10000.0 /*シミュレーションを終える時刻*/
- 48 名前:助けてください :02/06/26 00:59
- void main(void)
{
double tt = 0.0; /*シミュレーションクロック*/
int i; /*待ち行列のforのカウンタ*/
int j; /*機会のforカウンタ*/
int k; /*修理者のforカウンタ*/
int f = 0; /*故障している機械の台数*/
int q = 0; /*待ち行列の長さ*/
int sm[M + 1] = {0}; /*機会jのjの状態*/
int sn[N + 1] = {0}; /*修理者kの状態*/
int sq[M + 1] = {0}; /*待ち行列*/
double p[M + 1] = {0.0}; /*機会がf台故障している時間*/
srand(15);
- 49 名前:助けてください :02/06/26 01:00
- /*開始*/
while (tt <= T_END){
/*故障発生*/
for(j=1;j<=M;j++){
if(sm[j]==0){
if((1.0 / A*DT) > RAND()){
sm[j] = 1;
q = q+1;
sq[q] = j;
}
}
}
- 50 名前:助けてください :02/06/26 01:00
- /*故障修理*/
for(k=1;k<=N;k++){
if(sn[k]==0){
if(q>0){
sn[k]=sq[1];
q=q-1;
if(q>0){
for(i=1;i<=q;i++){
sq[i]=sq[i+1];
}
}
}
} else{
if((1.0/H*DT)>RAND()){
sm[sn[k]]=0;
sn[k]=0;
}
}
}
- 51 名前:助けてください :02/06/26 01:01
- /*表示*/
printf("%7.2f ",tt);
for (j = 1; j <= M; j ++) printf(" %2d",sm[j]);
printf(" ");
for (k = 1; k <= N; k ++) printf(" %2d",sn[k]);
printf(" ");
for (i = 1; i <= q; i ++) printf(" %2d",sq[i]);
printf(" ");
/*故障している機械の台数を数える*/
f=0;
for(j=1;j<=M;j++){
if(sm[j]==1){f=f+1;}
}
p[f]=p[f]+DT;
/*時刻を進める*/
tt=tt+DT;
}
/*結果出力*/
for(j=0;j<=M;j++){
printf("p[%1d]=%10f\n",j,(double)p[j]/T_END);
}
}
- 52 名前:助けてください :02/06/26 01:01
- 以上です
- 53 名前:デフォルトの名無しさん :02/06/26 01:02
-
イテレータとかのoperator->() は普通ポインタを返すようになってますが
なんでこれでメンバの参照ができるのですか?
そのまま単純に考えると
(イテレータ)->(メンバ名) は (Tのポインタ) (メンバ名) となるように思われ意味をなさないですよね。
Bjarneは
> p->m = 7; // (p.operator->())->m = 7
てますが、つまりoperator->()は特別扱いってこと?
- 54 名前:デフォルトの名無しさん :02/06/26 01:04
- srandとRANDぐらい?
- 55 名前:デフォルトの名無しさん :02/06/26 01:05
- ぱっと見、RAND()くらいしかないような。
- 56 名前:デフォルトの名無しさん :02/06/26 01:06
- >54
ぽいね。なんとかなりそうじゃん
- 57 名前:デフォルトの名無しさん :02/06/26 01:06
- 55 鬱氏
- 58 名前:助けてください :02/06/26 01:06
- どういうことですか?
- 59 名前:デフォルトの名無しさん :02/06/26 01:06
- >>52
>void main(void)
ここだけでワラタ。
- 60 名前:デフォルトの名無しさん :02/06/26 01:08
- i=1;i<=M ってのがいいね。
- 61 名前:デフォルトの名無しさん :02/06/26 01:10
- #include "compati.h"
のかわりに
#include<stdlib.h>
double RAND(void)
{
return (double)rand()/RAND_MAX;
}
- 62 名前:デフォルトの名無しさん :02/06/26 01:11
- >助けてください
#include"compati.h"
の代わりに
#include<stdlib.h>
double RAND(void){return (double)rand()/(double)RAND_MAX ;}
とでもすればよい
- 63 名前:62 :02/06/26 01:13
- げげげ
- 64 名前:61 :02/06/26 01:13
- >62
すまん。
- 65 名前:デフォルトの名無しさん :02/06/26 01:13
- かぶりまくっているな。
- 66 名前:デフォルトの名無しさん :02/06/26 01:14
- ふたりが一致したということは、かなり正解ってことかな?
- 67 名前:助けてください :02/06/26 01:15
- おお!エラーがなくなりました!
- 68 名前:デフォルトの名無しさん :02/06/26 01:17
- 待ち行列か。昔実験でやったよ。
- 69 名前:デフォルトの名無しさん :02/06/26 01:19
- ケコーン>>61-62
- 70 名前:助けてください :02/06/26 01:19
- ちなみに実行すると永遠に数字が出るんですがどこ直したらたらいいんですかね・・?
- 71 名前:デフォルトの名無しさん :02/06/26 01:20
- 新たな問題発生
- 72 名前:デフォルトの名無しさん :02/06/26 01:20
- >70
中身についてはがんばってくれよ
- 73 名前:デフォルトの名無しさん :02/06/26 01:21
- >70
ここから先は宿題の範疇
- 74 名前:助けてください :02/06/26 01:22
- ですよね(笑)
っていうかマジありがとうございました!
これで胸張ってあした免許の試験受けにいけます!
- 75 名前:デフォルトの名無しさん :02/06/26 01:23
- #define T_END 10000.0 /*シミュレーションを終える時刻*/
T_ENDの単位はわからないけど、いつか止まりそう。
- 76 名前:デフォルトの名無しさん :02/06/26 01:23
- あ、遅かったか。
- 77 名前:助けてください :02/06/26 01:26
- まだいました
- 78 名前:デフォルトの名無しさん :02/06/26 01:28
- そうか、あしたがんがれ。
- 79 名前:デフォルトの名無しさん :02/06/26 01:29
- #define DT 0.5 /*時刻増分*/
#define T_END 10000.0 /*シミュレーションを終える時刻*/
好きにかえればいい。このままだと20000行
- 80 名前:デフォルトの名無しさん :02/06/26 01:32
- >78
なんかいいひとっぽい。
- 81 名前:助けてくださってありがとうございました :02/06/26 01:36
- いやー、凄いですね。今大学3年なんですけど
どうやったらそんなにCできるようになるんですか?
- 82 名前:デフォルトの名無しさん :02/06/26 01:39
- >81
俺は大学4年だよ。Cをはじめたのは9年前だが。
- 83 名前:デフォルトの名無しさん :02/06/26 01:40
- プログラミングが好きならできるようになる。
試験があるならさっさと寝とけ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>81
(_フ彡 /
- 84 名前:助けてくださってありがとうございました :02/06/26 01:44
- りょうかいです
- 85 名前:デフォルトの名無しさん :02/06/26 01:51
- .∧ ∧
(>>53).。oO(氏にたい…)
/ \
⌒| /⌒
ノ_ノ
- 86 名前:デフォルトの名無しさん :02/06/26 01:54
- >>85
イテレータがポインタを返すようになってるから、->演算子はメンバを返す
ように(通常の構造体のアロー演算子のように)オーバーロードされてる
だけの話では?
- 87 名前:デフォルトの名無しさん :02/06/26 01:56
- >85
自分でスマートポインタ書いてみたらわかるんじゃない?
- 88 名前:デフォルトの名無しさん :02/06/26 02:05
- class A{
public:
void f(){
puts("A::f");
}
};
class B :public A{
public:
void f(){
puts("B");
A::f();// ここ
}
};
ここで、クラス名を指定せずに自動的に継承元のメンバ関数を呼ぶことはできないのでしょうか。
perlだとSUPER::を付けると検索してくれるんですけど。
- 89 名前:デフォルトの名無しさん :02/06/26 02:05
- C++の予約語ってこれ以外に何がありましたっけ?
auto
and
bool
char
class
const
const_cast
double
define
defined
do
extern
explicit
enum
else
elif
endif
export
float
for
int
if
ifndef
include
long
mutable
namespace
or
public
protected
private
return
register
static
static_cast
struct
switch
short
sizeof
template
typedef
typename
using
void
volatile
while
xor
- 90 名前:デフォルトの名無しさん :02/06/26 02:07
- >>88
多重継承が可能な言語では無理じゃないの?
- 91 名前:デフォルトの名無しさん :02/06/26 02:09
- >89
reinterpret_cast
- 92 名前:デフォルトの名無しさん :02/06/26 02:11
- >>88
しかも呼び方が違う
- 93 名前:デフォルトの名無しさん :02/06/26 02:11
- >>86
operator->()が返すの自体はポインタではないですか・・・
>>87
ただ単に保持しているポインタを返すだけで期待通り動くので何も新しいことは
わからなかったです・・・
- 94 名前:デフォルトの名無しさん :02/06/26 02:12
- dynamic_castもな。
それから、xorは予約語じゃないぞ
- 95 名前:デフォルトの名無しさん :02/06/26 02:13
- >>89
あと
import
extends
implements
abstract
native
があります
- 96 名前:89 :02/06/26 02:14
- >xorは予約語じゃないぞ
そうだった(..;)どうも
- 97 名前:デフォルトの名無しさん :02/06/26 02:15
- >95
なかなかアグレッシブな人物だな。
- 98 名前:89 :02/06/26 02:15
- extensってJavaじゃないでしか?(..;)
- 99 名前:デフォルトの名無しさん :02/06/26 02:16
- virtual 抜けてるかも。>>89
- 100 名前:デフォルトの名無しさん :02/06/26 02:17
- >>90
perlは多重継承を可能にするために@ISAが配列になってると思ってたんだけど。
- 101 名前:デフォルトの名無しさん :02/06/26 02:19
- >>94
orとかandはいいのですか・・・
- 102 名前:デフォルトの名無しさん :02/06/26 02:20
- >>89
なんか、要るのがなくて、要らんのがあるね
- 103 名前:デフォルトの名無しさん :02/06/26 02:20
- xor予約語じゃない?
try,catch もある。
- 104 名前:デフォルトの名無しさん :02/06/26 02:21
- case
break
- 105 名前:デフォルトの名無しさん :02/06/26 02:21
- >>89はここをみたらどうだい・・・
http://www.kuzbass.ru/docs/isocpp/lex.html
- 106 名前:デフォルトの名無しさん :02/06/26 02:22
- operator,new,delete
- 107 名前:デフォルトの名無しさん :02/06/26 02:23
- inline
- 108 名前:デフォルトの名無しさん :02/06/26 02:24
- friend asm union
- 109 名前:デフォルトの名無しさん :02/06/26 02:26
- signed unsigned this
- 110 名前:89 :02/06/26 02:27
- >>105
助かりましたありがとう
- 111 名前:デフォルトの名無しさん :02/06/26 02:27
- ifndefが入っててifdefがないのはどうよ
つーか、プリプロセッサディレクティブもありなのか?
- 112 名前:デフォルトの名無しさん :02/06/26 02:33
- >89
スキャナでも作る気?
- 113 名前:デフォルトの名無しさん :02/06/26 02:36
- エディタの強調表示用のキーワード登録とか?
- 114 名前:デフォルトの名無しさん :02/06/26 02:37
- >113
それ、ありそう。
- 115 名前:デフォルトの名無しさん :02/06/26 04:39
- 実装例があるかは知らないけど、exportキーワードはあるな。
- 116 名前:デフォルトの名無しさん :02/06/26 04:48
- 括弧とか比較演算子とか、記号を奇妙な2文字の組み合わせで表現する方法があったけど、
なんて言うんでしたっけ?
検索キーワードが思いつかず、具体的な表記も分からないので検索のしようがないです
- 117 名前:デフォルトの名無しさん :02/06/26 05:01
- トライグラフって、C++でも有効なの?
- 118 名前:デフォルトの名無しさん :02/06/26 05:55
- 有効。
- 119 名前:デフォルトの名無しさん :02/06/26 09:23
- stringクラスを参照ではなくそのまま関数の引数に与えるのは
良くないと言われたんだけど、本当ですか?
なんでも、VC標準のSTLやSTLPortではCopy On Writeになっていないから、だそうで。
- 120 名前:デフォルトの名無しさん :02/06/26 09:49
- >>119
string の値渡しは、const string& で渡す場合にくらべると、
百害あって一利なしって話だと思う。
あ、一利あった。
渡した先で const_cast されて、呼び出し元のデータが壊される危険性を回避できるな。
そんな理由で効率を落とす気には、普通は、ならんと思うけど。
- 121 名前:デフォルトの名無しさん :02/06/26 09:56
- >>119
VCのstringはリファレンスカウントしてるよ。
- 122 名前:デフォルトの名無しさん :02/06/26 10:36
- GCを導入しているC++処理系はありますか?
あったら教えてください
- 123 名前:デフォルトの名無しさん :02/06/26 10:43
- http://pc.2ch.net/test/read.cgi/tech/1014486422/
- 124 名前:122 :02/06/26 10:52
- まねじだ・・・(´д`;)
- 125 名前:デフォルトの名無しさん :02/06/26 11:19
- >>122
operetor new, operator delete を自前で定義すれば、処理系に依らず GC を
使えるけど。BoehmGC とか。
(ただし最適化しすぎると、動作がおかしくなったりする)
- 126 名前:デフォルトの名無しさん :02/06/26 16:44
- Cの初心者です。
ポインタについて学び、使い方は分かったのですが、これを使う理由が
つかめません。どういった場面で必要になるのか、どなたか教えて下さい。
- 127 名前:デフォルトの名無しさん :02/06/26 16:54
- >>126
文字列の操作、リストの実装、グラフの実装など。
ほとんどの場面で有効。
- 128 名前:126 :02/06/26 17:07
- >>127
即レスthxです。参考にになりました(ノ´Д`)ノ
- 129 名前:デフォルトの名無しさん :02/06/26 18:02
- >>89
誰もasmキーワードに触れなかったのは何故だろう(w
- 130 名前:デフォルトの名無しさん :02/06/26 18:14
- >>108
- 131 名前:デフォルトの名無しさん :02/06/26 19:08
- >>89
規格書を引くと 2.11 Keywords に書いてあるよ。
- 132 名前:デフォルトの名無しさん :02/06/26 21:35
- >>53よ、くじけるな! 俺も同じ疑問を持った人間だ!
何も考えてない>>86>>87がマヌケなレスをしてるが、
とりあえず確認コードを書いてみるべさ。
class HOGE
{
void foo(void){cout<<"foo"<<endl;}
};
auto_ptr<auto_ptr<HOGE> > ppHoge(new auto_ptr<HOGE>(new HOGE));
ppHoge->foo();
これでどうよ? 俺もまだ実験してないけど、これで
なにかが分かってくるんじゃないか?
あとで実験報告もするべさ!
- 133 名前:デフォルトの名無しさん :02/06/26 22:01
- trieコンテナのあるライブラリって無いですか?
指定したノード以下の要素すべて列挙できる物が欲しいのですが。
- 134 名前:デフォルトの名無しさん :02/06/26 22:05
- 純然たる木構造だったら、自分で書いてもたいして手間にならないんじゃない?
- 135 名前:132 :02/06/26 22:26
- VC6SP5での実験結果!
以下のコードが、正常にコンパイルされることがわかった!
(ppHoge->operator->())->foo();
ppHoge->operator->()->foo();
ppHoge.operator->()->operator->()->foo();
(*ppHoge.operator->()).operator->()->foo();
(*ppHoge.operator->())->foo();
で、結論。
ようするに、「new演算子」と「operator new」みたいな関係だ!
(オブジェクト)->(メンバ)
ってのは、「->演算子」の呼び出し。「->演算子」を呼び出すと、
演算子の左側がポインタなら、直(じか)に「->演算」を行う。
演算子の左側がクラスなら、そのクラスのoperator->()を呼び出した後、
「->演算」を行う。それが、
> p->m = 7; // (p.operator->())->m = 7
の意味だっ。
だから、
ppHoge -> -> foo();
はコンパイルされない。こいつは、「->演算子」の右側に引数が来るべき
なのに「->演算子」が来ているから。
うむっ、おっけっ! どこにも矛盾はないぞっ! どうよ?>>53
(´-`).。oO(問題は……これってプロ言を読んだら書いてありそうだなってことだ……)
- 136 名前:デフォルトの名無しさん :02/06/26 23:03
- >>135
そんな興奮せんでも仕様に書いてあるがな。
An expression x->m is interpreted as (x.operator->())->m for a class object…
- 137 名前:132 :02/06/26 23:58
- >>136
やっぱりかいっ!
(´-`).。oO(やっぱプロ言は買っとかんとあかんかね……)
- 138 名前:53 :02/06/27 00:03
- operator->()を呼び出した場合はさらにそのあとに -> があるかのようにあつかわれるのか?
というのが結局>>53の意図するところであったわけで・・・
漏れは「そうだよ」と言ってほしかっただけちゃうんかと・・・
ありがとう>>135・・・
ARMには>>136のように書いてあったようだね・・・
- 139 名前:デフォルトの名無しさん :02/06/27 00:09
- endif に誰も突っ込まないのは何故だろう・・・
もしかしてホントにそうなの?
- 140 名前:53 :02/06/27 00:14
- >>137
THE C++ PROGRAMMING LANGUAGE(=プロ言?)にあったのが
> p->m = 7; // (p.operator->())->m = 7
です・・・
- 141 名前:デフォルトの名無しさん :02/06/27 00:24
- > THE C++ PROGRAMMING LANGUAGE
これ本当にフルネームで言うのが大変。何かいい呼び名つけようか。
- 142 名前:デフォルトの名無しさん :02/06/27 00:26
- (´-`).。oO(鬱病なのって俺だけかな・・・)
- 143 名前:デフォルトの名無しさん :02/06/27 00:26
- C++3rd
- 144 名前:デフォルトの名無しさん :02/06/27 00:28
- (´-`).。oO(俺の他にも鬱病がいたんだな・・・)
- 145 名前:デフォルトの名無しさん :02/06/27 00:52
- 表紙の特徴から・・・Dragon Book、ラクダ本、Red Book
著者から・・・K&R、GoF、Petzold
う〜ん、表紙は各国で違ってるし特徴ないし、著者の名前も呼びにくいし・・・
- 146 名前:デフォルトの名無しさん :02/06/27 00:57
- >>145
表紙の特徴から・・・東映
- 147 名前:146 :02/06/27 00:58
- スマソ・・・
- 148 名前:デフォルトの名無しさん :02/06/27 01:03
- いいかも。波しぶき具合が東映ぽくて。
- 149 名前:デフォルトの名無しさん :02/06/27 01:23
- びあるね本
決定!
- 150 名前:デフォルトの名無しさん :02/06/27 01:50
- 昔のUNIXは3edとかいう名前がついてたと思った。
だからC++3edで十分。つーか既に古い。
- 151 名前:デフォルトの名無しさん :02/06/27 04:20
- MinGWがgcc3.1になった━━━━━━(゚∀゚)━━━━━━ !!
Dev-C++
http://www.bloodshed.net/dev/devcpp.html
- 152 名前:デフォルトの名無しさん :02/06/27 04:35
- >>151
gcc 3.x 系列、そろそろ安定した? 3.0.x の頃は、ちまちまとしたバグが出てた
みたいだけど。
(そろそろ乗り換え時か)
- 153 名前:デフォルトの名無しさん :02/06/27 12:01
- >>152
かなりいいみたいだよ。もっともDev-C++はまだβ版だけどね。
MinGWは実行ファイルのサイズが小さくて幸せ。
- 154 名前:デフォルトの名無しさん :02/06/27 16:45
- >MinGWは実行ファイルのサイズが小さくて幸せ。
ンなこたぁない
- 155 名前:デフォルトの名無しさん :02/06/27 17:28
- >>154
そ・・・・それは、、VCとかと比べるとあまり変わらンけど、BCよりは
小さいかなと。msvcrt使ってるから。
でも、gcc3.1になってから、実行ファイルのサイズが大きくなった
ようだし。。。取り敢えずサイズが小さいという言葉は取り下げます。
- 156 名前:デフォルトの名無しさん :02/06/27 19:29
- http://www.tietew.jp/cppll/archive/3217
このメッセージから始まっているスレッドで、
コンストラクタから例外を出さない方が良いとなっているんだけど
読んでもイマイチ理解できません。
class A {
char* buf;
public:
A():buf(new char[100]{}
~A(){delete buf;}
};
たとえばこんなクラスで、newが例外をthrowしても、
クラス構築失敗で問題無いと思うんですが。
- 157 名前:初心者以前 :02/06/27 21:04
- これからVC++を始めようと思うのですが、
つくったもの(exeファイル)をネット上で実行ってできるのでしょうか?
ダウンロードして、実行というものはみたことあるのですが
クリックして、ネット上で実行するものをみたことありません。
どうなのでしょうか
- 158 名前:名無しさん@カラアゲうまうま :02/06/27 21:09
- 文字列配列をnewで確保する方法ってこれであってますか?
char** all_line = new char*[n];
for(int i=0;i<n;i++)
all_line[i] = new char[100];
- 159 名前:デフォルトの名無しさん :02/06/27 21:23
- なぜvector<string>を使わない?
- 160 名前:名無しさん@カラアゲうまうま :02/06/27 21:30
- >>159
ごめんまだ入門者だから勉強してないんだ
- 161 名前:デフォルトの名無しさん :02/06/27 21:52
- >>157
「ネット上で実行」の定義を述べて下さい。
- 162 名前:デフォルトの名無しさん :02/06/27 22:18
- >>161
多分だけど、CGIプログラムのことじゃないかな?
- 163 名前:デフォルトの名無しさん :02/06/27 22:27
- >>158
いいけど100文字が分かっているなら
char (*p)[100] = new char[n][100] ;
のほうがいいと思う
- 164 名前:名無しさん@カラアゲうまうま :02/06/27 22:32
- >>163
ありがとうございました。
- 165 名前:デフォルトの名無しさん :02/06/27 22:48
- >161
Terrariumとか「ネットで実行」にぴったしダネ
- 166 名前:デフォルトの名無しさん :02/06/28 01:13
- みなさん自前のallocaterとか書いてますよね
俺も頑張ろう...
- 167 名前:デフォルトの名無しさん :02/06/28 01:18
- 書いてないヨ
- 168 名前:デフォルトの名無しさん :02/06/28 01:47
- >>166
allocator・・・・・・
- 169 名前:166 :02/06/28 10:42
- うわーん孤立しちゃったよ〜
- 170 名前:デフォルトの名無しさん :02/06/28 17:16
- Windowsでのエラー出力をストリームでやりたいのですが、
(最終的にはOutputDebugString()で出力する)
これって、ガリガリ書くしか方法は無いのでしょうか?
なんかSTL辺りに含まれてそうな気がするのですが(継承して使うとか)...
又、ソースを公開されているページでも良いので、ご存知でしたらお教えください。
trace << "エラー 変数=" << tmp << endl;
みたいに出来ないでしょうか...
- 171 名前:デフォルトの名無しさん :02/06/28 17:27
- >>170
http://www.jah.ne.jp/~naoyuki/Writings/ExtIos.html
ふぉらよ。あとは自力でなんとかしな。(勝手に引用失礼)
>>166
漏れもやってるよ。気にすんな。
でもインターフェースが気に入らずに結局vectorも自作したがな。
オラ不毛って言えよ!
- 172 名前:170 :02/06/28 17:31
- ↑そういうの待ってました!!
どうもありがとうございます。
- 173 名前:デフォルトの名無しさん :02/06/28 19:34
- 詳しい人に質問!たとえば ホームページの管理人つまり制作者はそのホームページに来
ている人のどこまでの個人情報を知る事ができるの?あっipから住所等の個人情報が解る
なんてこという低レベルの回答は無しね。っていうか、ここには低レベルな人はいないとはおもうけど。
- 174 名前:デフォルトの名無しさん :02/06/28 19:39
- 板違い
Web制作板にいけ。
- 175 名前:デフォルトの名無しさん :02/06/28 19:48
- >>173
その日にしたオナニーの回数や昨日食べた朝飯、
尻の使用回数などまでバッチリ分かりますが。
- 176 名前:デフォルトの名無しさん :02/06/28 20:44
- //a.h
class a {
private:
static int m_value;
public:
static int Get() { return m_value; };
};
//b.cpp
#include "a.h"
class b : public a {};
void main() {
b::Get();
};
とすると、リンク時に「Error: 外部シンボル 'a::m_value' が未解決」
となるんですが、なぜなんでしょう?
- 177 名前:デフォルトの名無しさん :02/06/28 20:46
- スタチックだから
- 178 名前:176 :02/06/28 20:57
- m_valueの実体が定義されてないからでした。
class a {
private:
static int m_value;
public:
static int Get() { return m_value; };
};
int a::m_value = 0;
- 179 名前:デフォルトの名無しさん :02/06/28 21:05
- >>174
すみません、そっちにいきます
- 180 名前:デフォルトの名無しさん :02/06/28 21:39
- #defineとconstの違いは何ですか?
constは関数の中などで軽く定数を持たせたいときに使う事でよいですか?
- 181 名前:デフォルトの名無しさん :02/06/28 21:44
- >>180
Effective C++を買って読もう。君の質問の回答はそこにある。
ついで、将来君が疑問に思うであろう問題の回答の3割ぐらいはそこにあるはずだ。
- 182 名前:180 :02/06/28 21:45
- >>181
どうもです。
財布に厳しい本ですが探してきます。
- 183 名前:デフォルトの名無しさん :02/06/28 21:47
- C++はプリプロセッサを使わないように改良されている・・・
by effective C++
- 184 名前:180 :02/06/28 21:54
- Effective C++
思ったより値段の安い書籍でしたね。
1万円ほどすると勘違いしてました。
>>183
ナルホドどうもです。
- 185 名前:デフォルトの名無しさん :02/06/28 23:38
- 便乗質問、EffectiveC++は図書館から借りてきて、暗記するほど
読み込んだのですが、Moreの方の評価はどんなもんでしょうか?
どちらかを購入したいのですが、間違いなく良書なれど既読の前者か、
立ち読みした感じ、ちょっと重箱の隅っぽい気がした未読の後者か…。
3800円を出せぬ貧乏人に、せめて知識をお与え下されば幸いです。
- 186 名前:デフォルトの名無しさん :02/06/29 00:04
- >>185
Effective C++, More Effective C++, Effective STL 三部作は、食費を削っても
買うべき。
- 187 名前:デフォルトの名無しさん :02/06/29 00:09
- STLもあったのか。買わねば・・・
- 188 名前:185 :02/06/29 00:18
- >>186
スマートポインタや例外処理の解説くらいならとりあえずいいかな
…と思って他のですが、前作に劣らぬ良書なんですねぇ。レスサンクスです。
食費\400/dayか………………(;´Д`)つI アト380ニチ…
- 189 名前:デフォルトの名無しさん :02/06/29 00:43
- Exceptional C++も死んでも買いなさい
- 190 名前:デフォルトの名無しさん :02/06/29 00:48
- Modern C++ Designもよろしく。
- 191 名前:デフォルトの名無しさん :02/06/29 00:52
- C++で書かれたデザインパターンの良本はありませんか?
- 192 名前:デフォルトの名無しさん :02/06/29 00:55
- >>191
俺の脳内で自動翻訳済みの物がある
- 193 名前:デフォルトの名無しさん :02/06/29 01:07
- >>191
GoF のデザパタ本で良いと思うが。後は 190 も挙げてるけど Modern C++ Desgin
が template 使ってデザパタしてる。
- 194 名前:デフォルトの名無しさん :02/06/29 01:13
- 191
_φ(。。_) GoFは著者名でしたっけ。ミョウニチ本屋へ足を運んでみます。
ありがとうです。
- 195 名前:デフォルトの名無しさん :02/06/29 01:16
- >>186 >>189-190
+ C++sardで6冊か(w
- 196 名前:デフォルトの名無しさん :02/06/29 01:18
- 洋書以外だと憂鬱本ぐらいか?(w
- 197 名前:デフォルトの名無しさん :02/06/29 01:46
- >>195
Inside the C++ Object Model も入れとく。コンパイラの内部動作について理解を
深めるのに最適。STL 使うなら Generic Programming - STL による汎用プログ
ラミングも必読。あとは C++ only の本ではないが Linkers & Loaders も読んで
おいて損はない。
>>196
あれも良い本だよな。OO がらみだと、デザパタ本に憂鬱本、それからリファク
タリングあたりか。
(とりあえず、こんなもんじゃない?)
- 198 名前:デフォルトの名無しさん :02/06/29 03:34
- 憂鬱本って何ですか?
- 199 名前:デフォルトの名無しさん :02/06/29 03:59
- >>198
『憂鬱なプログラマのための オブジェクト指向開発講座』
C++というよりはオブジェクト指向についての本だが。
わりと具体的に話を勧めていくので分かりやすい。
//しかし、必読書のレベルですらいくらかかるんだ?
- 200 名前:デフォルトの名無しさん :02/06/29 04:18
- C++コンパイラのインストーラには、
これらの本を理解しているかのテストをするセクションが欲しいね。
クリアしないと絶対にインストールできないの。
- 201 名前:198 :02/06/29 04:45
- >>199
ありがとうございます。
- 202 名前:デフォルトの名無しさん :02/06/29 10:18
- >>200
実際にやってみながら学ぶことができない罠。
- 203 名前:デフォルトの名無しさん :02/06/29 10:30
- >>200
ネタにマジレスするのもなんだが、そりゃ辛すぎだわ。コンパイラで
実験してみないとわからん、みたいなこともあるんだし。
>>197
俺、STLに関する本はすでに『C++標準ライブラリチュートリアル&
リファレンス』と『Effective STL』を持ってるんだけど、
『Generic Programming - STL による汎用プログラミング』は、
それでも買ったほうがいいぐらいの本?
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/qid%3D1025313500/250-3796507-7440208
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/qid%3D1025313461/250-3796507-7440208
http://www.amazon.co.jp/exec/obidos/ASIN/4756134416/qid%3D1025313416/250-3796507-7440208
あと、『Inside the C++ Object Model』って、洋書?
- 204 名前:デフォルトの名無しさん :02/06/29 11:17
- >>203
『Generic Programming ―』は、体系的・抽象的に書かれているので、
ある程度 STL が分かってから読むべき本のように思う。でも、読んでおくと
視野が広がるし、思考の経済というか、他方面への応用も利くと思う。
『Inside the C++ Object Model』は、以前トッパンから訳書が出ていたんだが、
同社の出版事業撤退により絶版状態のようだ。C++ を究めたいという酔狂もの
には必読。
- 205 名前:203 :02/06/29 12:05
- さんきゅ。憂鬱本とあわせて、その2冊も探してみるよ。
- 206 名前:デフォルトの名無しさん :02/06/29 22:57
- VC7でこんな現象に出くわしたんだが、これってバグだろうか?
下記ソースをコンパイルすると
error C2535: 'Aho<T>::Baka Aho<T>::f(Aho<T>::Baka)' : メンバ関数は、既に定義または宣言されています。
こういわれる。
template<class T>
class Aho {
typedef T::Baka Baka;
//typedef int Baka; // 上の行をコメントアウトしてこの行を有効にするとコンパイルが通る
template<class U> Baka f(Baka baka);
template<> Baka f<int>(Baka baka) { return Baka(); }
template<> Baka f<char>(Baka baka) { return Baka(); }
};
- 207 名前:デフォルトの名無しさん :02/06/30 13:57
- 3行目ですでに使われてるBakaをもう一度使ってるからじゃないの?
- 208 名前:デフォルトの名無しさん :02/06/30 16:43
- そゆ問題では無いと思う。
テンプレート引数に依存した不明な型Bakaを引数にとった関数は
その特殊化よりも不明な引数の一致を優先して判断されているように
見受けられる。バグかな・・。
- 209 名前:デフォルトの名無しさん :02/06/30 17:36
- >>208
とりあえず gcc 2.95.3 でも Borland C++ Compiler 5.5.1 でもコンパイルエラー
になることは確認したけど。
- 210 名前:デフォルトの名無しさん :02/06/30 18:41
- 配置構文(゚∀゚)デキタ!
- 211 名前:デフォルトの名無しさん :02/06/30 19:16
- >>209
するとC++として不正だって事?
なにがダメなんだろ・・・。
- 212 名前:デフォルトの名無しさん :02/06/30 19:23
- もしかして、
typedef typename T::Baka Baka;
じゃない?
- 213 名前:デフォルトの名無しさん :02/06/30 20:09
- >>212
だめですた・・
- 214 名前:デフォルトの名無しさん :02/06/30 20:54
- 教えてください。
Cを一通りできるとして
C++を業務レベルまでマスターするには
どれくらいかかるんですか?
- 215 名前:デフォルトの名無しさん :02/06/30 21:01
- STL3年デザパタ5年
- 216 名前:デフォルトの名無しさん :02/06/30 22:23
- >>206
typedef T::Baka Baka;
の意味を考えたらよくわかるはず.
当然,class T ではすでに T::Baka が typedef されている必要がある訳で.
あとは >>212 のいうとおり,
typedef typename T::Baka Baka;
は必須の気が.
- 217 名前:デフォルトの名無しさん :02/07/01 00:40
- >>216
いや、結果は変わらないんですよ・・。in VC7
他のコンパイラではどうなんでしょうか?
template<class T>
class Aho {
typedef typename T::Baka Baka;
//typedef int Baka; // 上の行をコメントアウトしてこの行を有効にするとコンパイルが通る
template<class U> typename Baka f(typename Baka baka);
template<> typename Baka f<int>(typename Baka baka) { return Baka(); }
template<> typename Baka f<char>(typename Baka baka) { return Baka(); }
};
- 218 名前:デフォルトの名無しさん :02/07/01 02:00
- >>217
だ か ら
具体的にどんなインスタンス作ってるか教えれ
答えるのはそれからだ
- 219 名前:デフォルトの名無しさん :02/07/01 09:40
- >>218
宣言しただけ。
インスタンスは作らない状態でエラーが出ます。
- 220 名前:デフォルトの名無しさん :02/07/01 10:46
- >>219
VC6 だと何事もなく通るけど。
- 221 名前:デフォルトの名無しさん :02/07/01 13:18
- >>220
・・本当だ。
つまりVC7のヴァグってことでOK?
ゲイツ氏ね
- 222 名前:デフォルトの名無しさん :02/07/01 13:22
- ・ここではどういう意味で「インスタンスを作る」という句を使っているのか?
・TにBakaを持っていないクラスを渡しているんじゃないか?
・VC6で通って、VC7で通らないことってあるの?
- 223 名前:デフォルトの名無しさん :02/07/01 14:18
- >>220
今試せないけどソースは上に上げたあれのみです。
typedef Aho<ほにゃらら>
もしてないし、ましてインスタンスの作成もしてないです。
- 224 名前:デフォルトの名無しさん :02/07/01 18:17
- お取り込み中申し訳ないのですが、新しく質問しても良いでしょうか?
基本クラスのポインタに派生クラスのオブジェクトをもたせている場合、
基本クラスのポインタをdeleteしただけでは派生クラスのデストラクタは
呼んでくれないのでしょうか?今書いているソースでそうなっていて
メモリリークを起こして困っているのですが・・・。
- 225 名前:デフォルトの名無しさん :02/07/01 18:22
- >>224
基底クラスのデストラクタを virtual にする必要があります。
- 226 名前:デフォルトの名無しさん :02/07/01 18:29
- >>225
あ、一応やってみています。当然ながらクラスと同名なので、デストラクタの
名前は変わってくるのですが、それでもオーバーライドしてくれるんですか?
やってみても呼んでくれてないようなんですが・・・
- 227 名前:デフォルトの名無しさん :02/07/01 18:43
- >>226
> 名前は変わってくるのですが、それでもオーバーライドしてくれるんですか?
もちろん。っつか、大抵の実装では名前なんか見てなくて vptr->vtbl に書き
込まれたポインタを参照するだけだし。
ダメだというそのプログラム、簡略化してテスト用のコードを張ってくれ。
- 228 名前:デフォルトの名無しさん :02/07/01 19:07
- >>227
ちょっと今取り込んでいるので、もし良かったら夜に張るので
お願いできますか?
- 229 名前:アポストロフィーS :02/07/01 19:11
- ちょっと質問です。
JPEG画像を縮小して保存するプログラムを作りたいんですが、自分でバイナリ読み取ってピクセル圧縮して色とかも平均出して・・・とかってやらないと駄目でしょうか。
かなり大変そうなんですが・・・ なんか簡単にできるライブラリとかありませんか?
- 230 名前:廻し者 :02/07/01 19:36
- x86 で Windows なら、インテルパフォーマンスライブラリにある、
Intel Image Libary と Intel JPEG Library なんか使ってみては
どうでしょうか。
ttp://www.intel.com/software/products/perflib/
- 231 名前:デフォルトの名無しさん :02/07/01 19:57
- g++のios::begがあった〜(疲労)
パパこれを探すのに5000ファイルくらい調べちゃったよ
- 232 名前:デフォルトの名無しさん :02/07/01 20:12
- 素直にgrep汁
- 233 名前:デフォルトの名無しさん :02/07/01 20:28
- >>227
単なる手前のボケでした。平身低頭、申し訳ありません。
一応顛末を書いておくと、基底クラスや派生クラスが親子構造で混在するような
システムを作っていて、deleteする時はデストラクタで子供を次々deleteしていく
ようにして、一変に消せるようにしていたのですが、条件判定に変なものを使って
失敗していたようです。お騒がせしました。
直したら立派に呼んでくれて安心しました。
- 234 名前:デフォルトの名無しさん :02/07/01 21:02
- >>231
locate ios_base で一発じゃないのか?
- 235 名前:234 :02/07/01 21:12
- まちがえた…
locate '*/ios'
とでもしてくれ。
- 236 名前:デフォルトの名無しさん :02/07/01 22:37
- >>230
どうもです。しかし・・・英語がむずい・・・;
なんか無理そうだ・・・とりあえず落としてみます。
- 237 名前:229 :02/07/01 22:38
- すいません、236は僕です。あと下げ忘れました。スマソ!!
- 238 名前:デフォルトの名無しさん :02/07/01 22:38
- libjpegなら日本語解説も沢山ある
- 239 名前: :02/07/02 00:03
- クラスのメンバ関数の引数の配列の数に変数を使いたいのですが
できますか?
むりなら代わりとなる方法を教えてください
- 240 名前:デフォルトの名無しさん :02/07/02 00:06
- 配列の数って要素数?
- 241 名前:デフォルトの名無しさん :02/07/02 00:23
- >>239
void A::foo(int array[], int count)
{
for (int i = 0; i < count; i++) cout << array[i];
}
で何か不満でも?
- 242 名前:デフォルトの名無しさん :02/07/02 00:54
- void A::foo(int arr[N])
の N を変数にしたいってことなのかな。飛躍し過ぎ?
- 243 名前:デフォルトの名無しさん :02/07/02 00:54
- >>239
vector
- 244 名前:デフォルトの名無しさん :02/07/02 01:00
- >>241>>239 微妙にスレ違い
void A::foo(vector<int> ints)
{
for (vector<int>::iterator i = ints.begin(); i != ints.end(); ++i) {
hanatanhalahala(i);
}
}
- 245 名前:デフォルトの名無しさん :02/07/02 01:01
- template<size_t N> void f(int arr[N]);
char a[256];
f(a);
- 246 名前:デフォルトの名無しさん :02/07/02 01:05
- >>245
動的なサイズ変更に対応できないのでアウト
- 247 名前:デフォルトの名無しさん :02/07/02 01:07
- 引数だと一次元目の[]の中身って意味なさないような。
- 248 名前:デフォルトの名無しさん :02/07/02 01:08
- ようは、239の質問が微妙ということでいいですか?
- 249 名前:デフォルトの名無しさん :02/07/02 01:14
- >>246
配列は動的ではない
- 250 名前:デフォルトの名無しさん :02/07/02 01:16
- >>248 いいです
■過去ログ置き場に戻る■
1- 次250
最新50