■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part37
251
名前:
デフォルトの名無しさん
:04/11/04 01:56:46
>>247
どうせしないって
252
名前:
デフォルトの名無しさん
:04/11/04 01:56:50
>>248
> 定義と宣言は一カ所でしろ。
ハァ? 実装を修正するたびにインクルードされてるファイルも毎回コンパイルするんかい。
253
名前:
デフォルトの名無しさん
:04/11/04 01:57:12
メール欄みただけで釣りだと分かった
254
名前:
デフォルトの名無しさん
:04/11/04 01:57:26
ネタかよw
255
名前:
デフォルトの名無しさん
:04/11/04 01:57:35
>>250
遅すぎ。読む前に感覚的に見てJavaという4字があった瞬間にネタだと分かれよ。
256
名前:
デフォルトの名無しさん
:04/11/04 01:58:20
大したことない設計しかしていない初心者は、1ソ−スに複数記述してもいいでしょう。
でも複数人でプロジェクト組むなら、1ソース1クラスが良いでしょう。
お遊びじゃないんだから。
257
名前:
デフォルトの名無しさん
:04/11/04 02:01:26
>>242
間違っても一つのクラスで一つのファイルなんて制限するなよ。
ソースを追いにくくなるから。
同じクラスでもグループごとに別ファイルにしたり、ユーザーが読むべき部分と読むべきでない部分は別ファイルにしろ。
C#から入った漏れには当たり前のことなんだが、
世の中には訳分からん無駄な作業をする奴もいるな。
258
名前:
デフォルトの名無しさん
:04/11/04 02:03:17
>>242
間違っても一つのクラスで一つのファイルなんて制限するなよ。
ソースを追いにくくなるから。
一つのプログラムは全部一つのファイルにまとめて書け。
ハンドアセンブルから入った漏れには当たり前のことなんだが、
世の中には訳分からん無駄な作業をする奴もいるな。
259
名前:
デフォルトの名無しさん
:04/11/04 02:14:29
もうネタはいいよ。本当に知りたい人が読んだら勘違いするだろ。
260
名前:
デフォルトの名無しさん
:04/11/04 02:15:31
マジかよ
261
名前:
デフォルトの名無しさん
:04/11/04 02:23:45
じゃぁまとめよう
一つのプログラムは全部一つのファイルに…
ゲフンゲフン
262
名前:
デフォルトの名無しさん
:04/11/04 02:31:13
>>261
ちゃうがな
263
名前:
デフォルトの名無しさん
:04/11/04 02:36:09
1クラス1ファイルとかってファンクタの類でも貫いてたらある意味尊敬するな。
264
名前:
デフォルトの名無しさん
:04/11/04 02:36:55
>>263
それはさすがにやらんな。
265
名前:
デフォルトの名無しさん
:04/11/04 04:04:53
>>263
もちろんインナークラスも別ファイルに分けて #include します。
266
名前:
デフォルトの名無しさん
:04/11/04 06:17:49
>>242
>ソースって一つのクラスごとに一つ作るのがいいんですか?
Cの頃はstaticやexternでシコシコ書くしかなくて
ファイルの分割が即スコープの分割を意味してたから
C++になっていまだにそういう迷信を信じている人も多い
267
名前:
デフォルトの名無しさん
:04/11/04 11:28:15
1ファイル1クラスにしたらどのクラスを探すのが楽やん
268
名前:
デフォルトの名無しさん
:04/11/04 11:42:14
俺も興味あるんだけど、結局どっちがいいんだ…「適度に」って言う曖昧なのが一番なのか。
今のところ建設的っぽい意見
・一般的には1クラス1ソースだが、小さいクラスが多いときはある程度まとめる
・再利用しにくいから1クラス1ソース
・実装を修正するたびにインクルードされてるファイルを毎回コンパイルしないために1クラス1ソース
・1クラス1ソースは、ファイルの分割が即スコープの分割を意味していたCの頃の迷信
269
名前:
デフォルトの名無しさん
:04/11/04 11:56:13
>>268
というか、関連が比較的強いクラスはまとめる。
長くなるようなら分割する。
コンパイルの際のファイル依存は極力減らす(PImplイディオムまではいかなくても)
でいいんじゃないの
270
名前:
デフォルトの名無しさん
:04/11/04 12:42:40
>>269
うーん、サンクス。となると例えば手元にある「コンポジットのクラスが
まとめられてる長いソース」は分割対象かなぁ。
実用で言ったら依存関係だけ考慮すれば良さそうだけど、
そうもいかないだろうしねぇ。
271
名前:
デフォルトの名無しさん
:04/11/04 22:42:05
原則論的な話をするとキリがないけど、モノを作り上げる効率性
を考えたら、1ソース1クラスで作ると決めたほうが、はるかに
効率が良い場合がほとんどですね。プロジェクトの分担がし易い
し、誰かが改良をしている時に、ほかの人が手を入れられない、
ということがなくなるし。
そもそも、ソース長すぎて分割しなくてはならない、
ってのは、ソフト業界で生きていくレベルにないね。。。
設計がなってないにもホドがある、ゾ・・・
272
名前:
デフォルトの名無しさん
:04/11/05 00:01:39
記念マキコ
273
名前:
デフォルトの名無しさん
:04/11/05 01:00:34
大阪(西梅田)、新宿(JR駅前)のそれぞれ一等地に
拠点を構え、業績急上昇中!未経験者大募集中!の
ソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/
応援するスレはこちら!
http://school4.2ch.net/test/read.cgi/job/1077432387/
最高の会社にするため、みんな頑張ってます!
274
名前:
デフォルトの名無しさん
:04/11/05 12:46:52
とあるクラスのメンバ関数の振る舞いについて質問です
int &Hoge(){
int mage = 0;
return mage;
}
とするとやはり危険なんですよね?
これを解決するために
1.mage を static int にする
2.メンバ変数として int mage を作っておく
Hoge を呼び出す側に変数を用意しておいて
Hoge に参照渡しするのが無難だと思いますが
上記の1,2の方法が問題ないのであれば、どちらがいいのでしょうか?
275
名前:
デフォルトの名無しさん
:04/11/05 12:50:56
コピーコンストラクタがあれば問題なし
276
名前:
デフォルトの名無しさん
:04/11/05 13:01:49
>>274
1 と 2 では意味が全然違うが?
277
名前:
デフォルトの名無しさん
:04/11/05 14:44:02
>>275
コピーコンストラクタをどのように用いればよいのでしょうか?
>>276
揮発性という観点で1,2を挙げたのですが
その違いというのも教えていただけないでしょうか
278
名前:
デフォルトの名無しさん
:04/11/05 15:18:20
int Hoge() { ... }
279
名前:
デフォルトの名無しさん
:04/11/05 15:21:53
>>277
#include <iostream>
using namespace std;
class foo {
int mage;
public:
foo() : mage(0) {}
int& Hoge() {return ++mage;}
};
class bar {
public:
int& Hoge() {
static int mage = 0;
return ++mage;
}
};
int main () {
foo f[2];
bar b[2];
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
cout << f[i].Hoge() << ' ';
cout << endl;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
cout << b[i].Hoge() << ' ';
cout << endl;
return 0;
}
280
名前:
デフォルトの名無しさん
:04/11/05 17:54:12
>Cスレの方でも書き込んだのですが、一応こっちも
あるクラスにbuf[4][128]という配列があり、これを単なる外部関数
で使いたいのですが、このアドレスをメンバ関数で取得するには
どう書けばよいのでしょうか?とりあえずこうしてみたのですが 駄
目でした。
class A
{
buf[4][128];
char** getBuf(void) { return (char**)buf; };
}
int main(void)
{
char **ptr;
ptr = classA->getBuf();
ptr[3][100]=100;//ここでハングアップ
}
281
名前:
デフォルトの名無しさん
:04/11/05 18:13:32
>>280
とりあえずコンパイルできる形にしてから載せろよ…
282
名前:
デフォルトの名無しさん
:04/11/05 18:17:24
これでどうでしょう?
class AAA
{
private:
char buf[4][128];
public:
char** getBuf(void) { return (char**)buf; };
};
int main(void)
{
AAA aaa;
char **ptr;
ptr = aaa.getBuf();
ptr[3][100]=100;//ここでハングアップ
}
283
名前:
デフォルトの名無しさん
:04/11/05 18:18:25
メモリレイアウトを考えろ
[0,0]...[0,127][1,0]...[1,127][2,0]...[2,127][3,0]...[3,127]
#include <iostream>
class A
{
public:
char buf[4][128];
char* getBuf(void){return (char*)buf;};
void print(){std::cout << (buf[3][100] & 0xff) << std::endl;}
} classA;
int main()
{
char *ptr;
ptr = classA.getBuf();
*(ptr + 3 * 128 + 100) = 100; // ここでハングアップ
classA.print();
}
}
284
名前:
283
:04/11/05 18:19:04
あ、ごめん、最後の}が余計
285
名前:
デフォルトの名無しさん
:04/11/05 18:25:11
返答有難うございます。
*(ptr + 3 * 128 + 100) = 100; // ここでハングアップ
これはこの形でないと駄目ということでしょうか?ptr[][]の
形でアクセスする方法はないのでしょうか?
286
名前:
デフォルトの名無しさん
:04/11/05 18:28:52
>>285
char* ptr; を char (*ptr)[128];に替えればいいだろ。
287
名前:
デフォルトの名無しさん
:04/11/05 18:37:22
あ、なるほど!ポインタ変数を変えるのですね。関数の戻り値を
変えることばかり考えて、そっちは気づきませんでした。
これで解決できそうです。ちょっとやってみます。
288
名前:
デフォルトの名無しさん
:04/11/05 19:24:46
>>287
関数の戻り値も変えられるけど?
286とまったく同じ構文で。
289
名前:
デフォルトの名無しさん
:04/11/05 19:57:01
>>280
> Cスレの方でも書き込んだのですが
いやそれマルチだから
お前ら親切ですね
290
名前:
デフォルトの名無しさん
:04/11/05 20:21:58
マルチすみません。
>関数の戻り値も変えられるけど?
はい、それを最初に試して、こんな感じにしてみたんですが
コンパイルエラーになります。
char(*)[128] getBuf(void){ return (char*)buf; };
(char(*)[128]) getBuf(void){ return (char*)buf; };
どういう風に書けばよいのでしょうか?
291
名前:
デフォルトの名無しさん
:04/11/05 20:39:35
>>290
char (*getBuf(void))[128];
あるいは
typedef char (*BUF)[128];
BUF getBuf(void);
292
名前:
デフォルトの名無しさん
:04/11/05 20:49:50
char (&getBuf(void))[4][128]{ return buf;}
のほうが良いとおもゆ
293
名前:
デフォルトの名無しさん
:04/11/05 20:55:55
>>291
>>292
試してみました。上手くいきました。
これで完全に解決しました。マルチに最後にまで付き合って
もらってすみません。勉強になりました。
294
名前:
デフォルトの名無しさん
:04/11/06 01:07:25
class A {
protected: void a() {}
};
class B : public A {
public: void b(A& a) { a.a(); }
};
というコードが vc7.1 で
error C2248: 'A::a' : protected メンバ (クラス 'A' で宣言されている)にアクセスできません。
というエラーになるのですが、これは c++ 標準の仕様なのでしょうか?
295
名前:
デフォルトの名無しさん
:04/11/06 01:13:41
yes
296
名前:
デフォルトの名無しさん
:04/11/06 01:38:37
>>294
this->a()しか呼び出せないよ。
297
名前:
デフォルトの名無しさん
:04/11/06 01:39:14
>>294
やってることを理解してない模様。
298
名前:
デフォルトの名無しさん
:04/11/06 01:56:40
基本的な事で素朴な質問なんですが、
test.h で、
struct test {
int a;
int b; };
class test2 {
int c;
int d;
SetC(int i);
SetD(int i);
GetC(void);
GetD(void); };
という宣言がなされていて、
test.cpp で、
#include "test.h"
int main(void) {
int sum;
struct test t;
t.a = 0;
t.b = 0;
sum = t.a + t.b;
printf("%d\n", sum)
return 0; }
というような(あまり意味のない)コードを作ったとします。
これをコンパイルした時、test.hのclass test2の方の
内部実装が未定義のSetC,SetD,GetC,GetDやclass test2
自体はどうなっちゃうのでしょうか?test.cの方でclass test2
を使ってなければコンパイルエラーにはならないですが、
実際に出来上がった実行形式ではclass test2の部分の定義
はコンパイラが削除してしまうのでしょうか?
299
名前:
デフォルトの名無しさん
:04/11/06 02:04:17
>>298
そもそも無いのだから削除する必要も無いのでは?
300
名前:
デフォルトの名無しさん
:04/11/06 02:33:28
>>296
class B : public A {
public: void b(B& b) { b.a(); }
};
これなら呼び出せるんだよ〜ん。
protectedメンバはthisを含め自分自身と同じ型のポインタ/参照ならアクセス可能。
301
名前:
デフォルトの名無しさん
:04/11/06 05:31:59
プログラミング言語C++第三版P108の上から二行目の
「しかし、正の整数を表現するためのビット数を一つ増やしたいために
int の代わりに unsigned を使うのは、ほぼ確実によくない」
のところが良く分かりません…これってどういうことなのでしょうか…?
302
名前:
デフォルトの名無しさん
:04/11/06 06:11:23
「C/C++で unsigned (int以上)を使うのは、ほぼ確実によくない」
に読み替えてかまわないと思うよ。
303
名前:
デフォルトの名無しさん
:04/11/06 06:23:21
でも理由が自分には良く理解出来ないので気持ち悪いです。
「値を正に保つために unsigned を宣言しても、暗黙の型変換
ルールがあるので、目的を達成出来ない」
ってあるけどこれ読んでも、値は正に保たれてるから別にいいのでは?
と思ってしまうのですが…
304
名前:
デフォルトの名無しさん
:04/11/06 06:44:09
>>303
前半は、たかが1ビット稼ぐために、unsignedを導入することによって発生する多大なデメリットは割に合わない。
後半は、文脈が分からんので知らん。
305
名前:
デフォルトの名無しさん
:04/11/06 07:53:03
>>301
そんなん用途によるがな。
いろんな型の欠点ばっかり言い出したら
それこそ使てええのん残らんで。
ただsignedとunsignedの不注意な混用は
ハメられて痛い目見るケースがよくあるから
くれぐれも気をつける癖をつけれちゅうんなら
俺もそう思う。
306
名前:
デフォルトの名無しさん
:04/11/06 07:53:27
でかいクラス(Form等)を1つのクラスで
複数のソースファイルに分割するというのは一般的に良く行われる事なのですか?
form.hでFormクラスを宣言して、
formcontrols.cppとformevents.cppとforminit.cppで定義を行うというような事です。
307
名前:
デフォルトの名無しさん
:04/11/06 08:05:12
>>306
一般的、とあるんでイヤだと答えるが・・・
そのケースの事情を見ずに言ってることなんで
声のトーンはごく控えめにしとく
ヘッダとソースとインラインに分けてるのはときどき見かけるなあ
それから「でかい」って何を基準に言ってるのかな?
数千行程度なら全然「でかい」うちに入らんぞ
たとえ数百行程度でも「でかい」と感じることもあるが
わかるか? ライン数やバイト数じゃねえってことだ
308
名前:
デフォルトの名無しさん
:04/11/06 08:21:05
普通1メソッド1ファイル
309
名前:
デフォルトの名無しさん
:04/11/06 08:25:52
1プログラム1ソースという結論が他の全てを論破したはずだが?
310
名前:
デフォルトの名無しさん
:04/11/06 08:31:52
おぞましい結論だな
311
名前:
デフォルトの名無しさん
:04/11/06 09:13:15
・1つのプロシージャの行数、
・ローカル変数のスコープ範囲、
・命名規則の一貫性の程度
で体感的なファイルの大きさは変わるな。
312
名前:
デフォルトの名無しさん
:04/11/06 09:17:05
下記のようにコーディングして、テキストファイルを読み込むと、
当然読み込んだデータの末端に余計な改行が入るのですけど、
不要な改行を付加することなく、スマートに
テキストファイルを読み込む方法はないでしょうか?
Open TextFilePath For Input As #1
Do Until EOF(1)
Line Input #1, Temp
ReadData = ReadData & Temp & Chr(13) & Chr(10)
Loop
Close #1
Text1.Text = ReadData
313
名前:
デフォルトの名無しさん
:04/11/06 09:19:47
>>312
そんなえさで(ry
314
名前:
デフォルトの名無しさん
:04/11/06 10:19:32
スレ違いだボケ
315
名前:
デフォルトの名無しさん
:04/11/06 10:20:34
>>312
http://pc5.2ch.net/test/read.cgi/tech/1080569567/
316
名前:
デフォルトの名無しさん
:04/11/06 11:23:46
--a.cc--
extern void func1(void);
int main(){
...
func1();
}
--b.cc--
extern func2(void);
void func1(void){
...
func2();
}
--c.cc--
void func2(void){
...
}
という3つのファイルがあって,g++ a.ccをするとundefined reference to func2()
がでるのですが,何がいけないのでしょうか?
317
名前:
●
:04/11/06 11:27:06
>>316
g++ -c a.cc
318
名前:
デフォルトの名無しさん
:04/11/06 11:27:07
ゼルダ
319
名前:
デフォルトの名無しさん
:04/11/06 11:29:56
>>317
なるほど,了解しました.ありがとうございました.
リンクする前にとめればいいんですね.
320
名前:
デフォルトの名無しさん
:04/11/07 15:21:49
C++は「なんだって出来る」言語だけれど、
何を作るかによって設計を変えないとやっていけない。
クラス設計が関わるレベルであれば、オブジェクト
指向で設計しないと使えないヤツになってします。
アドレス渡しなんてやっていたら・・・オソロシイィィ
でも組み込み機器の設計や、リアルタイム制御の世界
だったら、まだまだポインタは必要だけどね。
トンカチで釘打つ時にトンカチに釘接着してから
木に打ち込もうとしたら、技術のレベルが知れるわね。
321
名前:
デフォルトの名無しさん
:04/11/07 15:22:19
そこでRubyですよ
322
名前:
デフォルトの名無しさん
:04/11/07 15:31:17
ところでこのRubyのひとって複数いるの?
323
名前:
デフォルトの名無しさん
:04/11/07 15:36:13
漏れも思った
一人であちこち巡回してるのかと思うと、
相当なアンチRubyなんだろうなって思う
明らかにRubyに対し悪いイメージしか残してないからなw
324
名前:
デフォルトの名無しさん
:04/11/07 15:41:20
そこでRubyですよ
325
名前:
デフォルトの名無しさん
:04/11/07 16:13:52
計算機言語には得手不得手があるからなぁ。
なんでもかんでもC++ってわけにもイカンのはたしかだ。
それでもパフォーマンスとOO設計の両方を兼ね備えたのなんざ
C++とEiffelくらいしか無いからね。
326
名前:
デフォルトの名無しさん
:04/11/07 16:14:53
そこでRubyですよ
327
名前:
デフォルトの名無しさん
:04/11/07 16:18:07
Rubyで物理計算やらせると終わらないので却下です
328
名前:
デフォルトの名無しさん
:04/11/07 16:18:45
このスレは監視されているっ……
329
名前:
デフォルトの名無しさん
:04/11/07 16:22:14
誰にだよ〜
>>328
330
名前:
デフォルトの名無しさん
:04/11/07 16:26:41
オレオレ、俺だよ、ばあちゃん
331
名前:
デフォルトの名無しさん
:04/11/07 16:32:14
>>325
C++はともかく
- OCaml
- Objective C
- Delphi
を出さずにEiffelを出すのは何で?
Eiffelはパフォーマンスが要求される所で実績あったりするの?
332
名前:
デフォルトの名無しさん
:04/11/07 16:37:05
>>331
別に深い意味はないよ、自分で選んだ結果として書いてるだけ。
あげてもらった言語に対しては
ObjectiveC:嫌いではない、Next使ってた頃はすごく重宝した
Delph:環境がWindowsしかない、すごく良くできているのにもったいない
OCaml:ごめんなさい、評価もしたことないのです
なんだよね、Eiffel入れたのは自分が使ったことがあって速度の問題もそれほどでなかったからなんだよ
でも大意としての機械言語には向き不向きがあるって事は了解してくれているんだよね?
333
名前:
325
:04/11/07 16:38:44
補足:
ClosとかCommonLispが自分は好きだけどチームからは不評なんです。
334
名前:
デフォルトの名無しさん
:04/11/07 17:06:06
>>332
Next は NeXT と書いてくれ
335
名前:
デフォルトの名無しさん
:04/11/07 17:10:46
>>332
DelphはDelphiと書いてくれ
336
名前:
デフォルトの名無しさん
:04/11/07 17:12:36
>>332
レスどうも
いろんな言語の経験がお有りなんですね
Eiffel使いなんて珍しいなと思って聞いてみました
向き不向きの話は同意です
最近R(S言語)の関数をC++に移植してるんですが
S言語はお気楽すぎて作業が大変です
337
名前:
デフォルトの名無しさん
:04/11/07 17:13:40
>>332
つっこみどころが多いな!
338
名前:
デフォルトの名無しさん
:04/11/07 18:00:12
>>337
現につっこめてねえヒヨッ子がはったりかましてんじゃねえw
339
名前:
デフォルトの名無しさん
:04/11/07 18:09:49
Eiffelは、関数の部分型関係が引数に対してcovariantなのが分かりづらい。
340
名前:
デフォルトの名無しさん
:04/11/07 18:27:20
>>339
そんだけ混乱してりゃ解りづらいのは道理だなw
341
名前:
デフォルトの名無しさん
:04/11/07 18:29:47
>>338
>>334-335
342
名前:
デフォルトの名無しさん
:04/11/07 18:32:26
>>341
なるほど、そういうことか
343
名前:
デフォルトの名無しさん
:04/11/07 19:35:54
コンストラクタの書き方で悩んでいます。
派生クラスのコンストラクタで受け取った引数を少し加工してから、
基底クラスのコンストラクタに渡してやりたいのですが、
記述方法がわかりません。書く方法あったら教えていただけないでしょうか。
344
名前:
デフォルトの名無しさん
:04/11/07 19:39:36
struct d : b {
d(int a) : b(a + 1) { }
};
345
名前:
デフォルトの名無しさん
:04/11/07 19:59:03
>>344
ありがとうございます。助かりました。
346
名前:
デフォルトの名無しさん
:04/11/08 14:48:20
Objective C は Objective-C と書いてくれ
347
名前:
デフォルトの名無しさん
:04/11/08 21:58:02
ということは Objective-C = Objetive となるの?
348
名前:
デフォルトの名無しさん
:04/11/08 22:02:30
>>347
operator-はオーバーロードされてません!残念!
349
名前:
デフォルトの名無しさん
:04/11/08 22:37:48
'c' - 'C' == ' '
だと思うがどうよ
350
名前:
デフォルトの名無しさん
:04/11/08 23:33:30
質問です。
データ読み込み関連のクラスでデータを拾ってきて使おうとすると
クラスが層みたいになってるので、どうしても
hoge->getHoge()->getHogeHoge(hoge->getHogeNo())->getHogege()->getString(hoge->getHogeHogeNo()).c_str()
とか長くなってしまいます。
こういうときはどう組んだらよいのでしょうか?
351
名前:
デフォルトの名無しさん
:04/11/09 00:07:24
get関数の中でget関数を呼べば?
352
名前:
デフォルトの名無しさん
:04/11/09 00:10:19
>>351
なるほど。
ありがとうございました。
353
名前:
デフォルトの名無しさん
:04/11/09 01:42:39
typedef double (*FUNCTION)(double, double );
は何を意味しているんですか?
初心者です。よろしくお願いします。
354
名前:
デフォルトの名無しさん
:04/11/09 01:45:06
二つのdouble型を引数に持ち、戻り値もdoubke型の関数ポインタを型定義している。
355
名前:
デフォルトの名無しさん
:04/11/09 03:34:36
typedef double (*FUNCTION)(double, double)[20];
は何を意味しているんですか?
356
名前:
デフォルトの名無しさん
:04/11/09 03:36:10
syntax error です。
357
名前:
デフォルトの名無しさん
:04/11/09 05:56:25
コンストラクタの呼び出しについてなんですが、皆さんは
T t(tt); // 髭推奨
T t = tt; // 禿推奨
のどちらがいいと思いますか?
358
名前:
デフォルトの名無しさん
:04/11/09 05:56:53
配列のポインタを返す関数をtypedefするのはどうするの?
359
名前:
デフォルトの名無しさん
:04/11/09 06:12:24
わざわざtypedefする意味あんの?
360
名前:
デフォルトの名無しさん
:04/11/09 06:24:32
>>357
コンストラクタをexplicit宣言しておくと微妙に差が出るな。
361
名前:
デフォルトの名無しさん
:04/11/09 08:36:26
int main()とvoid main()は何がどう違うんですか?
362
名前:
デフォルトの名無しさん
:04/11/09 09:57:56
>>361
バッチファイルなどのスクリプトから子プロセスとして呼び出した時、戻り値を使えるかどうかの違い。
Windowsのシステム環境変数 「errorlevel」とか、Unixのシェル変数 「$?」で戻り値を取得可能。
バッチの例:
hoge.exe
echo %errorlevel%
363
名前:
デフォルトの名無しさん
:04/11/09 11:57:11
>>362
説明不充分。voidだと使えないのではない。不定値になるのだ。
364
名前:
デフォルトの名無しさん
:04/11/09 12:31:10
CUIのプログラムの場合はプログラムの始めと終りが大事なんだけど
GUIの場合ほとんどウインドウ開いて閉じるだけの意味しかない。
Windowsしか知らないでCUIプログラム作ってると意味わかんないだろう。
365
名前:
デフォルトの名無しさん
:04/11/09 13:24:44
>>363
お前はとりあえず、日本語の勉強しろ。
例としてあげるならば、「使えない奴だな。」は、奴が使用不能であることを指すのではない。
使っても物の役に立たないという意味だ。使う自由はあくまでユーザにある。
お前が日頃から言われていることだからすぐに理解できるだろう。な?
366
名前:
デフォルトの名無しさん
:04/11/09 13:32:42
>>365
切れどころがわかんね┐(´〜`)┌
367
名前:
デフォルトの名無しさん
:04/11/09 14:29:19
句読点の使い方をもっと勉強しましょう。
368
名前:
デフォルトの名無しさん
:04/11/09 14:54:40
まぁ363は揚げ足取りに見えるな
文頭が「補足で〜」とかなら頭良い人に見えるのに
369
名前:
デフォルトの名無しさん
:04/11/09 15:53:21
>>358
typedef int (*(*FUNCTION)())[];
370
名前:
デフォルトの名無しさん
:04/11/09 16:30:49
揚げ足の取り合いは醜いポ(´・ω・)y--oO○ エトー・・・
371
名前:
デフォルトの名無しさん
:04/11/09 22:10:23
クラスで使用する定数をVC++6.0で定義しようとしたら
static const int HOGE=0;
ができないらしいので、enumで代用しました。
文字列定数を使う場合はどうやればいいでしょうか
VC++6.0を窓から投げ捨てる以外の方法を教えてください
372
名前:
デフォルトの名無しさん
:04/11/09 22:15:33
古いC++コンパイラは糞ばっかだからなぁ。
買い換えましょう。
373
名前:
デフォルトの名無しさん
:04/11/09 22:19:40
>>371-372
そのクラス宣言内での初期化ができるのはISOでも整数型だけと決まっている。
というわけで普通の静的メンバと同じようにしろ。
//ヘッダ
class Foo
{
static const char * const HOGE;
};
//cppファイル(1ファイルでだけ)
const char * const Foo::HOGE = "Hoge";
374
名前:
デフォルトの名無しさん
:04/11/09 22:21:57
>>371
ワラタ
お前が飛び降りれば良いだろw
375
名前:
デフォルトの名無しさん
:04/11/09 22:22:29
class foo
{
public:
static const int hoge;
};
const foo::hoge = 0;
376
名前:
371
:04/11/09 22:24:06
>>373
なるほど。そうだったんですか
ありがとうございました
>>372
さんも微妙にありがとう
377
名前:
デフォルトの名無しさん
:04/11/09 22:25:44
>>371
VC6はARM仕様、ISO/IEC14882と違うつーて騒ぐ池沼は適正なし
378
名前:
デフォルトの名無しさん
:04/11/09 22:28:32
>>377
GCCこそが標準でありISOは糞である!
そこんとこ間違えないように!
379
名前:
デフォルトの名無しさん
:04/11/09 22:41:51
>>378
GCC はウンコです。
http://pc5.2ch.net/test/read.cgi/tech/1095583235/528-
380
名前:
デフォルトの名無しさん
:04/11/10 01:42:53
>>361
void main() は規格外。
381
名前:
デフォルトの名無しさん
:04/11/10 06:39:49
変数のスコープや使われ方が分かりやすくなるように
いきなりブロックを書いて無理矢理スコープを制限したり
してるんですが、なんだか美しくない気がします。
こういうことは普通にやるものなのでしょうか?
↓こんな感じです
{
int a1, a2
if (a1 < a2) return -1;
if (a1 > a2) return +1;
}
{
int b1, b2;
if (b1 < b2) return -1;
if (b1 > b2) return +1;
}
382
名前:
デフォルトの名無しさん
:04/11/10 07:40:14
swich - case の中でローカル変数使いたいときはよくやる
switch(式){
case 1:
{
int a = 1;
printf("%d\n", a);
}
default:
{
int a = 2;
printf("%d\n", a);
}
}
383
名前:
デフォルトの名無しさん
:04/11/10 07:42:14
default: の前に break; 忘れてる
384
名前:
デフォルトの名無しさん
:04/11/10 08:10:42
>>381
たまにやる。
古いCではローカル変数をブロック途中で新しく定義するために使う。
C++ではデストラクタのタイミングを調整するために使ったりする。
関数に分けてすっきりした名前が付くなら、分けたほうがいい。
385
名前:
381
:04/11/10 08:11:01
>>382
自分もそれはやるんですが、やっぱ
>>381
はさすがに
冗長?というか余計なお世話なのかなあ、と。
自分的にはブロックで囲むと
{ // hoge する
/* ... */
}
みたいな感じでコメントも分かりやすくなるのでは?
と思ってたりするのですが、これがほとんどなされない
ような書き方ならば逆に読みにくくなるかもしれないので
やめた方がいいのかと。
386
名前:
デフォルトの名無しさん
:04/11/10 08:33:06
>>381
普通にやる。むしろ推奨。
最終的にリファクタリングで関数に切り出せることを暗示している。
387
名前:
デフォルトの名無しさん
:04/11/10 08:36:25
>>384-385
ttp://www.tietew.jp/cppll/archive/7539
388
名前:
デフォルトの名無しさん
:04/11/10 08:55:14
>>385
確かに古い書き方の人は殆どやらないようだが、スコープがはっきりするので私もお奨め。
例えばこういうケースはfunc()を他人が作る場合にしばしばおきるので。
void myFunc()
{
int x, y;
...;
x = ...;
...;
y = ...;
int rtn;
{
struct ForFunc tmp = {x, y};
rtn = func(tmp);
}
switch (rtn) {
case FuncRtnOk:
...;
break;
case FuncRtnError:
default:
...;
}
}
まぁ、C++ならブロック化しなくてもすむんだけどね。
389
名前:
デフォルトの名無しさん
:04/11/10 11:56:09
無名名前空間内の関数って名前空間内で定義しないとダメなんですか?
390
名前:
デフォルトの名無しさん
:04/11/10 14:27:29
map をキーではなく値でソートさせるようには出来ないのでしょうか?
391
名前:
デフォルトの名無しさん
:04/11/10 15:17:55
>>390
キーと値を逆にしたものを持てばいい。
392
名前:
デフォルトの名無しさん
:04/11/10 17:48:51
>>389
その通り。
393
名前:
デフォルトの名無しさん
:04/11/10 19:18:36
>>390
最新版のboostには複数要素を基準にソートできるコンテナが入る。
394
名前:
デフォルトの名無しさん
:04/11/10 23:08:07
int* p_ = 0;
void reg(int* p) { p_ = p; }
void foo() { ++(*p_); }
int i = 0;
reg(&i);
std::cout << i << std::endl;
foo();
std::cout << i << std::endl;
とした場合、iが最適化でfoo()前後で同じ値が使われるということはあるのでしょうか?
395
名前:
デフォルトの名無しさん
:04/11/10 23:12:24
ないんじゃね?もし何か具体的にコンパイラの挙動を疑っているの
ならばそのコンパイラを晒した方がレスが早そうだが。
396
名前:
394
:04/11/10 23:19:52
>>395
ttp://forums.belution.com/ja/cpp/000/009/26.shtml
ここの・ライブラリに関連ってとこでそんなことが書いてあったのですが
もしこういう最適化をされたら面倒だなと思ったのです。
397
名前:
デフォルトの名無しさん
:04/11/10 23:23:29
>>396
エイリアスを使わないと仮定するとか
そういうようなコンパイルオプション使うとそうなります。
398
名前:
デフォルトの名無しさん
:04/11/10 23:26:27
>>394
標準関数でない関数呼び出しの前後で、完全ローカル(*)でない変数が同じであることは期待しないで最適化するはず。
つまり、きちんと違う値が出力されるはず。
#完全ローカルと書いたが、要はアドレス参照されてないローカル変数。
399
名前:
394
:04/11/10 23:40:33
>>397
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_.2f.oa.2c_2f.ow.asp
これのことですね。
>>395
,
>>397-398
よくわかりました。ありがとうございました。
400
名前:
デフォルトの名無しさん
:04/11/11 00:57:36
class Hige{
};
class Hoge:public Hige{
};
class Mage:public Hoge{
private:
std::vector<Hige> hige;
public:
Mage(){
hige.push_back( /* ここにHogeが持つclass Higeを入れたい */ );
}
};
このようなことが実現可能でしたら、その方法をご教授ください。
よろしくお願いします。
401
名前:
デフォルトの名無しさん
:04/11/11 00:59:09
自分の基底クラスへのポインタがほしいと言うことか?
402
名前:
デフォルトの名無しさん
:04/11/11 01:02:01
>>400
vectorの中身がポインタではないのでコピーになっちゃいますよ?
403
名前:
デフォルトの名無しさん
:04/11/11 01:02:14
たぶんそのことだと思います^^;
Mageに継承したHogeの、さらに継承元のHigeを
higeに格納したいのですが…
404
名前:
デフォルトの名無しさん
:04/11/11 01:05:32
やっぱポインタじゃないと直接アクセスは無理ですか…^^;
つまり
std::vector<Hige*> hige;
にしておき、基底クラスへのポインタを hige に格納というわけですよね?
基底クラスとやらを勉強してきます
即レスありがとうございました
405
名前:
デフォルトの名無しさん
:04/11/11 01:06:36
>>404
勉強するのはそっちじゃないと思う・・・。
406
名前:
デフォルトの名無しさん
:04/11/11 01:07:34
およ…
407
名前:
デフォルトの名無しさん
:04/11/11 01:09:26
って、「基底クラスのポインタの返し方」ですよね?^^;
408
名前:
デフォルトの名無しさん
:04/11/11 01:11:44
thisでいいやん。
409
名前:
デフォルトの名無しさん
:04/11/11 23:37:35
クラスAとクラスBがあって、
クラスAがクラスBのポインタを保持
クラスBがクラスAのポインタを保持
っていうのは可能でしょうか?
相互にクラスポインタを保持すると何故かコンパイルエラーが出るのですが…
410
名前:
デフォルトの名無しさん
:04/11/11 23:48:03
>>409
ポインタならできるはず・・・
ただ先行宣言が必要だけど
class B;
class A {
B* b_;
};
class B {
A* a_;
};
411
名前:
デフォルトの名無しさん
:04/11/11 23:53:41
先行宣言というより friend class っぽい悪寒
412
名前:
デフォルトの名無しさん
:04/11/11 23:58:35
>>400
hige.push_back(*static_cast< Hige * >(this));
>>409
class B;
class A {
private:
B *b;
};
class B {
private:
A *a;
};
413
名前:
デフォルトの名無しさん
:04/11/12 00:22:18
ちゅーか
>>409
は
Cの自作関数の作り方から勉強し直しの予感
414
名前:
409
:04/11/12 00:43:16
>>410-412
先行宣言じゃなく相互にヘッダをincludeしてたんですがエラーの原因は別でした。
試行錯誤の結果無事できました。レスありがとうございました。
>>413
ちゅーかc++の勉強不足でした…orz
415
名前:
デフォルトの名無しさん
:04/11/12 01:36:06
>>414
> 相互にヘッダをincludeしてたんですが
詳しく
416
名前:
デフォルトの名無しさん
:04/11/12 02:03:36
>>415
あ、すみません。よく見たらちゃんと先行宣言もしてありました。
---a.h---
#include"b.h"
class a{
public:
a(b* bb){pb = bb;}
b* pb;
};
---b.h---
#include"a.h"
class a;
class b{
public:
b(a* aa){pa = aa;}
a *pa;
};
簡略化するとこんな感じのソースでした。では。
417
名前:
デフォルトの名無しさん
:04/11/12 08:43:35
もういっぺん基礎からやり直せ
418
名前:
デフォルトの名無しさん
:04/11/12 09:16:47
int b();
int a() { b(); }
int b() { a(); }
419
名前:
418
:04/11/12 09:17:31
ゴメソ勢いでintっちまった
420
名前:
デフォルトの名無しさん
:04/11/12 15:14:51
code_a.cc
code_b.c
というC++とCの二つのcodeがあります。
code_aで使っている関数のうちb1()はcode_b.cで定義されていて、
code_bで使っている関数のうちa1()はcode_a.ccで定義されています。
Makefileの中に
code_a: code_a.o code_b.o
code_a.o: code_a.cc
code_b.o: code_b.c
という依存関係が書かれており、
make code_a
をすると
g++ -c -o code_a.o code_a.cc
gcc -c -o code_b.o code_b.c
gcc code_a.o code_b.o -o code_a
code_a.o: In function `main':
code_a.o(.text+0xa1a): undefined reference to `b1()'
code_b.o(.text+0x907): undefined reference to `a1()'
collect2: ld returned 1 exit status
make: *** [code_a] Error 1
というlink errorが出ます。
code_a.ccをの中身を書き換えて(constを#defineにしたり)、
code_a.cに変えてしまえば問題なくmakeが通ります。
code_aをC++のままでmakeしたいのですが、
何が問題なんでしょうか。
421
名前:
デフォルトの名無しさん
:04/11/12 15:19:20
>>420
/* code_a.cc */
extern "C" int b1(); // b1がCリンケージの関数であることを示す宣言
extern "C" int a1(){/* ... */} // a1をCリンケージの関数として定義
これでうまくいかないかな。
422
名前:
420
:04/11/12 15:26:47
どうもありがとうございました。
上手くいきました。
これって基本事項かな?
普段、Cのcodeと混在させるってしないもので。
423
名前:
デフォルトの名無しさん
:04/11/12 17:54:59
>>422
基本中の基本。
424
名前:
デフォルトの名無しさん
:04/11/12 17:58:20
C++ FAQくらいよんどこうな
425
名前:
デフォルトの名無しさん
:04/11/12 20:36:45
C++ を使って数値計算 (おもに行列計算) をやりたいのですが、
フリーで質のよいライブラリってあるでしょうか?
よろしくお願いします。
426
名前:
デフォルトの名無しさん
:04/11/12 20:40:50
>>425
まずは本スレ21へのレスをどうぞ
427
名前:
デフォルトの名無しさん
:04/11/12 20:44:17
>>426
ごめんなさい。すでに出ていたのですね。
ご丁寧にありがとうございます。
428
名前:
デフォルトの名無しさん
:04/11/12 21:20:53
本スレがあるのかと考えてしまった
「本店」とかと同じ使い方か
429
名前:
デフォルトの名無しさん
:04/11/12 23:11:27
>>416
溜息…
430
名前:
デフォルトの名無しさん
:04/11/12 23:28:52
>>528
その場合の「本店」自体、イントネーションで二通りの解釈があるな。
431
名前:
デフォルトの名無しさん
:04/11/13 01:39:34
いわゆる「当店」って意味ですか。
432
名前:
デフォルトの名無しさん
:04/11/13 10:44:37
本官を侮辱すると(ry
433
名前:
デフォルトの名無しさん
:04/11/13 12:56:59
javaのdeprecated宣言の様にコンパイル時に該当クラスやメソッドの利用を推奨しない事を警告するような方法はありますでしょうか?
環境に依存しないのが良いのですが特定のコンパイラにはあると言う情報でもかまいません。
434
名前:
デフォルトの名無しさん
:04/11/13 13:02:29
>>433
クラス単位なら、当該ヘッダに #warn 書いておくとか。
435
名前:
デフォルトの名無しさん
:04/11/13 16:05:51
>>434
ヘッダ内に移行すべきクラス書きたい時とかどうしようか悩んでしまってるんです。
やはり事由を記述して新しいヘッダ読めって書くべきなんでしょうかねぇ。
むぅ。
436
名前:
デフォルトの名無しさん
:04/11/13 17:15:25
>>433
doxygen
437
名前:
デフォルトの名無しさん
:04/11/13 17:20:03
>>433
ttp://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Function-Attributes.html#index-_0040code_007bdeprecated_007d-attribute_002e-1612
438
名前:
433
:04/11/13 17:26:13
みなさんありがとう、
gccっていろいろ拡張されているんですねぇ。
とりあえず現行のソースは@deprecatedを使ってdoxygenで作ったマニュアルを見てくださいと#warnに書いておく事にします。
439
名前:
デフォルトの名無しさん
:04/11/14 11:56:05
コンストラクタのメンバ初期化部って表現力低すぎだよね
440
名前:
デフォルトの名無しさん
:04/11/14 18:57:58
>>439
配列以外で特に不満はないが・・・
441
名前:
デフォルトの名無しさん
:04/11/14 18:59:29
構造体も・・・
442
名前:
デフォルトの名無しさん
:04/11/14 19:02:23
構造体も必要ならコンストラクタ書いちゃうから気にしないなぁ。
443
名前:
デフォルトの名無しさん
:04/11/14 19:14:34
Win32APIだと構造体だらけで
HOGE hoge = { sizeof(HOGE) };
なんて初期化する場面がしょっちゅうあるからな。
444
名前:
デフォルトの名無しさん
:04/11/14 19:25:23
>>443
動作上よく出てくるのはいいが
記述上おなじことを何度も書いてる香具師は低脳
445
名前:
デフォルトの名無しさん
:04/11/14 19:34:59
>>444
それコンストラクタのメンバ初期化と何か関係ある話か
446
名前:
デフォルトの名無しさん
:04/11/14 19:39:08
>>445
442までは関係あったが、443から関係なくなった
447
名前:
デフォルトの名無しさん
:04/11/14 19:41:38
>>446
443も関係あるじゃん。
448
名前:
デフォルトの名無しさん
:04/11/14 19:45:35
>>447
いーや、関係ない
442で終わった話を無理やり続けているだけ
449
名前:
デフォルトの名無しさん
:04/11/14 20:01:49
あげてる奴はなんでそんなに仕切りたがってるんだ。
450
名前:
デフォルトの名無しさん
:04/11/14 20:08:28
>>449
別に続けるなとは言ってない
この点でもまたお前は流れが読めてない
451
名前:
デフォルトの名無しさん
:04/11/14 20:11:42
>>450
屁理屈はいいから。
つか
>>444
はコンストラクタの話とは関係なかったんだな。
どうりで意味不明だと思った。
452
名前:
デフォルトの名無しさん
:04/11/14 20:57:51
const参照の代入をコンストラクタ内で行えたら便利よくないか?
よくないか。
453
名前:
デフォルトの名無しさん
:04/11/14 20:59:00
>>452
「const参照の代入」ってなんだ?
454
名前:
デフォルトの名無しさん
:04/11/14 21:02:05
int main()
{
unsigned short int a,b,c;// 2 byte
a=40000;
b=30000;
c = (a+b) >> 1;
cout << "a: " << a << endl;
cout << "b: " << b << endl;
cout << "c: " << c << endl;
}
こいつの出力がちゃんと
a: 40000
b: 30000
c: 35000 // ここがオーバーフローして計算されると予想した
になるのはコンパイラが賢いからでしょうか?文法的に正しいのでしょうか?
それともわたしが勘違いしてるのでしょうか?(環境はVC7.1です)
教えてください。
455
名前:
デフォルトの名無しさん
:04/11/14 21:03:42
希望通りにしたいなら
(unsigned short)(a+b)
456
名前:
デフォルトの名無しさん
:04/11/14 21:07:24
>>454
"integer promotion" または 「整数の格上げ」 とか、そういうの。
457
名前:
デフォルトの名無しさん
:04/11/14 21:17:07
>>453
const参照→const Hoge&なメンバ変数がコンストラクタ内なら代入できる。みたいな
458
名前:
デフォルトの名無しさん
:04/11/14 21:20:52
>>457
初期化で十分だな。そんなの全然便利よくない。
459
名前:
デフォルトの名無しさん
:04/11/14 21:27:42
>屁理屈はいいから。
プ
460
名前:
デフォルトの名無しさん
:04/11/14 21:30:22
>>459
どうでもいいから無駄話でageんな。
461
名前:
デフォルトの名無しさん
:04/11/14 21:45:24
>>458
const変数の初期化をコンストラクタ内でしたいと思うことはかなりある。
参照はなにかとややこしいので出来なくていいと思うが。
JavaもC#も出来るし、次はC++もできるようにして欲しいな。
462
名前:
デフォルトの名無しさん
:04/11/14 21:50:42
VBのソースをC++に変換するにはどうしたらいいの?
463
名前:
デフォルトの名無しさん
:04/11/14 21:53:17
いったん.NETにコンバートしてコンパイル。
実行ファイルを逆アセンブルしてC++.NETのソースに戻す。
dotnet2win32を使って普通のコードに直す。
ただし、完全にうまく行くとは限らない。
はい、次の方どうぞ。
464
名前:
デフォルトの名無しさん
:04/11/14 21:57:33
>>461
初期化したいなら初期化すればいいだろ。
代入できるようにする必要は無い。
465
名前:
デフォルトの名無しさん
:04/11/14 22:02:41
>>463
即レスありがとう。
私が使用してるのはMicrosoft Visual C++ 6.0なんですが
コンバートできますか?
466
名前:
デフォルトの名無しさん
:04/11/14 22:03:18
>>464
>>457
は「代入」と書いてるが、書いてる内容はJavaなんかの初期化のことだ。
ある計算結果をconstメンバにしたいときとか。
467
名前:
454
:04/11/14 22:04:22
>>455-456
ありがとうございます。
キーワードをもとに調べてようやくわかりました。
1. 型は常に、必要であれば、精度を失わないように、サイズの大きな型にプロモートされる
2. int型よりもより小さな整数型が含まれた算術式では、評価の前にint型にプロモートされる
(C++ Primerより)
ということはint型より大きな数値で試せばオーバーフローするのかな?と思って試すと無事(?)フローしました。
int main()
{
unsigned short int a,b,c;// 2 byte
a=40000;
b=30000;
c = (a+b) / 2;
cout << "a: " << a << endl;
cout << "b: " << b << endl;
cout << "c: " << c << endl;
unsigned long d,e,f,g; // 4 byte
d = 4000000000;
e = 3000000000;
f = (d+e) / 2;
g = (d & e) + ((d ^ e) >> 1);
cout << "d: " << d << endl;
cout << "e: " << e << endl;
cout << "f: " << f << endl;
cout << "g: " << g << endl;
}
ありがとうございました。
468
名前:
454
:04/11/14 22:06:36
--- 467の結果 ---
a: 40000
b: 30000
c: 35000
d: 4000000000
e: 3000000000
f: 1352516352
g: 3500000000
---
_(._.)_
469
名前:
デフォルトの名無しさん
:04/11/14 22:11:56
Foo::Foo(int x) : constmember_(x ? Foo::bar() : Foo::Baz()) {}
何も困らんが、釣り?釣られた?
470
名前:
デフォルトの名無しさん
:04/11/14 22:16:13
>>466
C++で代入と初期化の区別を曖昧にするな。
計算結果をconstメンバにしたけりゃ勝手にしろよ。
471
名前:
デフォルトの名無しさん
:04/11/14 22:16:16
>>469
誰も困ってるなんて話はしてないわけだが。
そうやってメンバ初期化部分がごちゃごちゃするから
コンストラクタ内で書けるといいねってだけの話だ。
472
名前:
デフォルトの名無しさん
:04/11/14 22:17:05
そうですよね
Foo::Foo(int x) : constmember_(x ? (x!=1 ? (x!=2 ? ( x!=3 ? (....) : Foo::bar3() ) : Foo::bar2() ) :Foo::bar1()):Foo::bar()) : Foo::Baz()) {}
473
名前:
デフォルトの名無しさん
:04/11/14 22:17:16
>>470
区別を曖昧にしてるのは俺じゃねーよ。457だ。
474
名前:
デフォルトの名無しさん
:04/11/14 22:17:57
>>471
469のどこがごちゃごちゃ?
コンストラクタ内で書けるとどうなるの?
475
名前:
462
:04/11/14 22:18:21
私はどうしたらいいんでしょう^^:
476
名前:
デフォルトの名無しさん
:04/11/14 22:19:25
>>474
いちいち例を書かんとダメなのか・・・
メンバが複数あったりコメント書きたかったり、適当に想像しろ。
477
名前:
デフォルトの名無しさん
:04/11/14 22:19:50
>>475
出て行けばいいとおもうよ。
478
名前:
デフォルトの名無しさん
:04/11/14 22:20:26
>>475
笑えばいいと思うよ。
479
名前:
462
:04/11/14 22:22:13
煽らなくても^^:
480
名前:
デフォルトの名無しさん
:04/11/14 22:26:32
>>460
ああ、ごめんなw
481
名前:
デフォルトの名無しさん
:04/11/14 22:26:40
笑とけ笑とけ。
482
名前:
デフォルトの名無しさん
:04/11/14 22:27:26
>>475
自力でゴリゴリするも良し。1から作り直すのもまた宜し。
483
名前:
デフォルトの名無しさん
:04/11/14 22:29:15
>>475
VBの一関数を書き直すだけとかなら機械的にできなくもないが、
フォームデザインも含めてとなると結局は作り直しになる。
484
名前:
462
:04/11/14 22:32:36
>>483
回答ありがとうございます
>VBの一関数を書き直すだけとかなら機械的にできなくもないが、
そういうソフトとかあるんでしょうか?
フォームやデザインは書き直さなくてもいいので良ければ教えてもらえると
幸いです。
485
名前:
デフォルトの名無しさん
:04/11/14 22:49:54
>>484
スレ違い。環境依存スレへどうぞ。
この辺とか。
http://pc5.2ch.net/test/read.cgi/tech/1098912550/
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
486
名前:
デフォルトの名無しさん
:04/11/15 02:57:03
bmpファイルのビット数を変換するためのサンプルプログラムなどを置いているサイトなどありませんか?
487
名前:
デフォルトの名無しさん
:04/11/15 05:52:27
>>486
ありますが、純C++の話題じゃないので書けません。
488
名前:
デフォルトの名無しさん
:04/11/15 05:54:29
Rubyなら簡単だよ!!!!!!!!!!!!!!!!!!!!1
489
名前:
デフォルトの名無しさん
:04/11/15 07:17:40
>>486
http://pc5.2ch.net/test/read.cgi/tech/1090897159/
490
名前:
デフォルトの名無しさん
:04/11/15 13:39:12
>>486-
>>489
スマソ、向こうで聞いてみます。
491
名前:
デフォルトの名無しさん
:04/11/16 22:18:45
仮想継承やってて sizeof したらサイズがでかいんです
g++ だと普通なのに…
492
名前:
デフォルトの名無しさん
:04/11/16 22:27:59
>>491
??わからん??
gcc以外のコンパイラではサイズがでかくなるという意味?
493
名前:
デフォルトの名無しさん
:04/11/16 22:29:33
>>491
どうもそうらしいな。
http://www.s34.co.jp/cpptechdoc/article/sizeof/index.html
494
名前:
デフォルトの名無しさん
:04/11/17 17:18:58
っていうか、クラスを使う限り、sizeofを使うケースってある?
もちろん、Cの関数を呼び出すケースは別にして。
コンテナとアルゴリズムを適切に使っていれば、
使うケースは無いような気がするけど、どーよ?
495
名前:
デフォルトの名無しさん
:04/11/17 17:48:26
>>493
基本中の基本
496
名前:
デフォルトの名無しさん
:04/11/17 20:36:19
template<typename T>
とかの T の種類によって処理を変えたりとかできませんかね
switch (T) {
case int:
みたいな
497
名前:
デフォルトの名無しさん
:04/11/17 20:38:48
モダーン嫁
498
名前:
デフォルトの名無しさん
:04/11/17 20:39:58
if (typeid(T) == typid(int) {
// int の時の処理
} else if (typeid(T) == typid(double) {
// double の時の処理
} 以下続く
ただし全然オススメ出来ない
特殊化すればいいわけだし
499
名前:
デフォルトの名無しさん
:04/11/17 20:44:17
ありがとうございます。特殊化というのを調べてみます
500
名前:
デフォルトの名無しさん
:04/11/17 20:53:38
RTTI牛刀
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.