■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part23
251
名前:
デフォルトの名無しさん
:03/09/15 14:46
>>249
template<class T,int N> int alen(T (&)[N]){return N;}
alen(vertices);
252
名前:
デフォルトの名無しさん
:03/09/16 01:39
C++の本を買おうと思うんだけどお勧めの本とかあったら教えて欲しいです。
ちなみに、自分はほぼ完全な初心者です。
ネットで基本的な事は大体調べましたが、
意味がちゃんと理解出来てるか怪しいレベルです。
253
名前:
デフォルトの名無しさん
:03/09/16 02:00
>>252
まず英語を読める環境(自分も含めて)を整えて、規格書とboostドキュメントへgo。
本など要らぬ。
254
名前:
デフォルトの名無しさん
:03/09/16 02:44
>>252
スレ違い
255
名前:
デフォルトの名無しさん
:03/09/16 06:05
いやいや「相談室」の名にふさわしい相談だ
256
名前:
デフォルトの名無しさん
:03/09/16 11:17
>>255
やっばりスレ違い
おれはどうだっていいんだけど。
>>252
ここみた?
http://pc2.2ch.net/test/read.cgi/tech/1060693125/l50
257
名前:
デフォルトの名無しさん
:03/09/16 15:50
仕切りたがる奴がいるな
258
名前:
デフォルトの名無しさん
:03/09/16 19:36
>>257
だったら
>>252
の手とり足とり 相談にのってやれよ
259
名前:
デフォルトの名無しさん
:03/09/16 20:11
>>258
助長すんな
260
名前:
デフォルトの名無しさん
:03/09/16 21:16
はぁ、ちょっと疲れたな・・・
261
名前:
デフォルトの名無しさん
:03/09/16 21:26
>>252
>意味がちゃんと理解出来てるか怪しいレベルです。
ライバルを探せ。これ最強。
262
名前:
デフォルトの名無しさん
:03/09/16 21:30
>>260
そんな時にはコレ。
http://www.yunker.org/
263
名前:
デフォルトの名無しさん
:03/09/17 13:54
MSDNライブラリのオンラインヘルプを一括ダウソするソフトって需要ある?
264
名前:
デフォルトの名無しさん
:03/09/17 16:32
Nothing
265
名前:
デフォルトの名無しさん
:03/09/17 18:56
欲しい。クレ
266
名前:
デフォルトの名無しさん
:03/09/17 19:24
>>265
作っていただけませんか?
できればフリーで。
267
名前:
デフォルトの名無しさん
:03/09/17 19:25
ダウンロードしたものをクレ
268
名前:
デフォルトの名無しさん
:03/09/18 06:02
>>263-267
作りたいと心から思っているおまいらにぴったりのプログラムがあります。
ttp://ido.nu/kuma/projects/_gu/
初心者から上級者まで、このソースをベースに頑張れば現実を物にすることができます。
269
名前:
●
:03/09/18 19:35
C言語で文字列を解析する関数を作りたいんですけど、
char同士の代入のあたりでコアダンプしてしまいます。
どうすればいいか教えていただけませんか?
$ cat whyerror.c
#include <stdio.h>
#include <stdlib.h>
int test(char ** string_ptr, char * string) {
int len = 0;
*string_ptr = (char *)malloc(sizeof(char));
while (*string) {
printf("%d: %c\n", ++len, *string++);
*string_ptr = (char *)realloc(*string_ptr, sizeof(char) * (len + 1));
**string_ptr++ = *string++; /* ??? */
}
**string_ptr = '\0';
return 0;
}
int main(void) {
char * string;
char * result;
string = "this is test!";
test(&result, string);
printf("result: %s\n", result);
return 0;
}
$ gcc whyerror.c -Wall; ./a.exe
1: t
2: i
Segmentation fault (core dumped)
270
名前:
デフォルトの名無しさん
:03/09/18 19:37
>>269
スレタイ255回読み直してから出直してこい
271
名前:
●
:03/09/18 19:42
>>270
ご、ごめんなさい。。。
ぜんぜん気付きませんでした。
逝ってきます。
272
名前:
デフォルトの名無しさん
:03/09/18 19:42
>>270
がいいこと逝った。
文字列の解析とかCではやりたくない罠。
std::string / boost::regex とか使えば早いかも。
273
名前:
●
:03/09/18 19:49
>>272
でもそれ以前に、/* ??? */ の一行が間違っていそうな気が
するんですが、何がどう間違っているかが分からないんです。
ポインタの扱い方を勘違いしているのかな?
charにcharってそのまま代入してもいいんですよね?
#どこで聞けばいいのか分からない・・・。
#宿題じゃないけど宿題スレにでも行こうかな。。。
274
名前:
デフォルトの名無しさん
:03/09/18 19:53
>>273
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/
ちなみになんで落ちるかっつーとreallocの第一引数がmalloc/reallocで確保された
メモリ領域を指していないから。原因はstring_ptr++;
275
名前:
デフォルトの名無しさん
:03/09/18 20:12
>>263
作って!作って!どっとこむ!
276
名前:
●
:03/09/18 20:19
皆さん、ありがとうございました。
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/663-
に再投稿しました。
277
名前:
デフォルトの名無しさん
:03/09/19 14:22
あるクラスが継承クラスをコンパイル時に選択できるようなtemplateクラスって作れます?。
template<class T:public CA>class TCA{/**/};←こんなの?
278
名前:
デフォルトの名無しさん
:03/09/19 14:34
>>277
可能。
どういう効用があるかはModern C++ Design参照。
279
名前:
デフォルトの名無しさん
:03/09/19 14:35
template <class T, class B>
class M : public B
とかじゃなくて?
280
名前:
デフォルトの名無しさん
:03/09/19 14:59
モダンですか・・・C++始めて3週間の私にはちょっと難しいですね。
class CA{};
class CB{};
template<class T>class TCA{
class T:public CB{};
};
main(){
TCA<CA> tca;/*じゃあ、こんなのは?*/
}
281
名前:
デフォルトの名無しさん
:03/09/19 15:01
>>280
もうちょっと文法見直してホスイ
282
名前:
デフォルトの名無しさん
:03/09/19 15:06
つーか、別に今すぐ覚えて使おうとせんでもいいと思うんだが。
283
名前:
デフォルトの名無しさん
:03/09/19 15:17
文法的にエラーなのは解るんですが、そうではなくてtemplate引数としてあたえられた型情報に、
コンパイル時に継承クラスを付加できるか?ということなんです。
わかりにくい例ですいませんでした。
284
名前:
デフォルトの名無しさん
:03/09/19 15:19
>>283
意味わかんないよ。
どういうふうに使いたいのか、使用例を書いてみるのはどうか。
しかし、テンプレートに与えられた型のほうの存在自体を修正するってこと?
だとしたらかなり無理があるが。
285
名前:
デフォルトの名無しさん
:03/09/19 15:27
やっぱ無理そうですね。常識的に考えれば無理があるのは解ってるんですが、C++ぐらい自由度の高い
言語だと何かやりかたがありそうな気がしたんです。
静的な型付けされた型そのものを書き換えるわけにはいきませんよねぇ。
もしできたら、JAVAのObject型の無条件継承とかできるような気がしたんですが。
286
名前:
デフォルトの名無しさん
:03/09/19 15:36
>>285
なんだか知らんが、勘違いをしているようだぞ。
ほんとうにやりたいことは、たいていできる。
しかし、やり方を間違えればできないものだ。
287
名前:
デフォルトの名無しさん
:03/09/19 15:41
>>285
無条件継承? どういうことがいいたいのかまだよくわからないや。
template <T: CB> class TCA {
T t;
};
と書いたとき、クラスTCA<T>におけるメンバtの型Tは、
引数として与えられた型をCBの派生に修正して使う、ということ?
例えばここで class CC: public Object { ... }; というクラスがあったとき
TCA<CC> における t の型は
Objectの派生のCCであるだけでなく、さらにCBを派生元とするように
多重継承が追加された新たな型になっていることを期待しているってこと?
継承元にCBが含まれているクラスしかパラメータにすることを許さないとかならできるんだが。
288
名前:
デフォルトの名無しさん
:03/09/19 16:22
template <typename T,typename Base>
class hoge{
template <bool> class type;
template <> class type<false>{
public:
class type:public T,public Base{};
};
template <> class type<true>{
typedef T type;
};
public:
type<SUPERSUBCLASS(T,U)>::type t;
};
これでHoge<T,Base>::t はBaseから派生してなければBaseを追加で継承したものになるし、そうでなければTそのものになる(Baseから2回派生しない)
SUPERSUBCLASSはModern C++ Designかloki参照。
289
名前:
288
:03/09/19 16:29
>>type<SUPERSUBCLASS(T,U)>::type t;
type<SUPERSUBCLASS(Base,T)>::type t;
だ。
290
名前:
デフォルトの名無しさん
:03/09/19 17:27
>>285
こんなのは
class base{};
template<class T>
class sub : public T
{};
template<
template<class>class TSub,
class T = base>
class Test
{
public :
typedef TSub<T> InStruct;
};
int main()
{
typedef Test<sub>::InStruct MakeStruct;
return 0;
}
291
名前:
290
:03/09/19 17:31
うわぁ〜。恥ぅいね。
292
名前:
デフォルトの名無しさん
:03/09/20 03:41
掲示板を作ろうと思うんだけどC++でも出来る?
perlとか言うのじゃないと無理?
293
名前:
デフォルトの名無しさん
:03/09/20 03:48
>>292
できる。ていうか大抵の言語でできるよ。
294
名前:
デフォルトの名無しさん
:03/09/20 03:59
operator->* ってなんですか?
295
名前:
デフォルトの名無しさん
:03/09/20 03:59
>>293
thx
頑張ってみるよ。
ちなみに難易度としてはどれくらい?
@2ヶ月くらいで作りたいんだけど。
ちなみにほとんど初心者です。
HSPならシューティング〜RPGまで作れたんだけど
これじゃプラス要素にならないよね・・・_no
296
名前:
デフォルトの名無しさん
:03/09/20 04:06
>>295
c++<perl<PHP
297
名前:
デフォルトの名無しさん
:03/09/20 04:23
>>295
多分2ヶ月じゃ無理だと思う。
出来たとしても使い物にならない予感。
298
名前:
デフォルトの名無しさん
:03/09/20 04:34
>>294
メンバへのポインタ。
299
名前:
デフォルトの名無しさん
:03/09/20 04:49
>>296
PHPちょっと調べてみたんだけど、
CGIより速くてサーバ負荷も小さいみたいな事が書かれてたんだけど
でもサーバの1機能として動作する、ってのが気になった。
フリーのHPスペースでPHP置ける所ってあるの?
300
名前:
デフォルトの名無しさん
:03/09/20 04:53
そういう質問は板違い。
301
名前:
デフォルトの名無しさん
:03/09/20 04:54
あ、スマソ。専用のスレ探してきます。
302
名前:
294
:03/09/20 04:57
正直、なんだこりゃです。
class A
{
public: int operator->* (int a) // 引数と戻り値はなに?
{
return 50 + a;
}
};
#include <iostream>
int main()
{
A a;
int n = a->*(10); // いや、なにこれ?
std::cout << n;
return 0;
}
303
名前:
デフォルトの名無しさん
:03/09/20 05:25
何のために使うかというと、だいたいはスマートポインタ用なわけだよ。
struct A{ int i};として、
スマートポインタ ふつうのポインタ
smart_ptr<A> pA(new A); A* pA=new A
int A::* pi = &A::i; int A::* pi=&A::i;
pA->*pi=40; pA->*pi=40;
~~~こいつが、operator->*
304
名前:
デフォルトの名無しさん
:03/09/20 05:35
スマートポインタじゃなくて
まずメンバ関数へのポインタだろ。
305
名前:
デフォルトの名無しさん
:03/09/20 06:15
302をうけて、(operator ->* を実装するようなクラスは)
だいたいスマートポインタ、という意味ですが。
306
名前:
デフォルトの名無しさん
:03/09/20 10:34
#ifdef __cplusplus
extern "C"
{
ってどういういみですか?
307
名前:
デフォルトの名無しさん
:03/09/20 10:54
>>306
寝た早めて。
308
名前:
306
:03/09/20 10:57
>>307
ネタじゃありません。
ソースの他のプログラムとかはわかるのですが、
そういったところの意味を理解せずにきてました。
309
名前:
デフォルトの名無しさん
:03/09/20 11:34
C++はCに非ず
310
名前:
デフォルトの名無しさん
:03/09/20 13:00
条件付コンパイルって奴ですな。
確かに、コンパイルそのものについて書かれている本は少ない。
VC++のプリコンパイルヘッダを見たときは
「何だコイツ、何がしたいんだ?」
と思ってた。
プログラミングのほとんどは独学でできるけど、
やっぱりすぐ得られるリソースは仕事仲間だと思う今日この頃。
311
名前:
デフォルトの名無しさん
:03/09/20 14:51
追加:
CはC++に非ず
>>306
要するにコンパイラがCかC++かを判断する為
312
名前:
デフォルトの名無しさん
:03/09/20 23:52
Bjarne Stroustrup
って
何て読むんですか
313
名前:
デフォルトの名無しさん
:03/09/21 00:08
はげ
314
名前:
デフォルトの名無しさん
:03/09/21 00:22
ワラタ
315
名前:
デフォルトの名無しさん
:03/09/21 00:24
>>312
http://www.research.att.com/~bs/pronounciation.wav
316
名前:
デフォルトの名無しさん
:03/09/21 00:38
ttp://www.research.att.com/~bs/Bjarne.jpg
このスレの住人は、これを壁紙にしなさい
317
名前:
デフォルトの名無しさん
:03/09/21 00:39
とても嫌な
デスクトップになったので
やっぱり、やらなくていいです。
318
名前:
312
:03/09/21 00:40
カタカナで教えてください
教えてくれないと
壁紙設定します。
319
名前:
デフォルトの名無しさん
:03/09/21 00:45
C#って胸キュン?
template使えるの?
D言語って胸キュン?
どんどん言語増やさないでください。
C++より劣ってたら怒ります
320
名前:
デフォルトの名無しさん
:03/09/21 00:52
>>319
C# は俺的には萌え。
template (のようなもの)は来年に出るバージョン以降つかえるようになる。
D は俺的にはいまいち。
まあ、無理やり萌えれないこともない。
321
名前:
デフォルトの名無しさん
:03/09/21 01:01
スレ違いにレスすんな
322
名前:
デフォルトの名無しさん
:03/09/21 01:05
うるせー馬鹿
323
名前:
デフォルトの名無しさん
:03/09/21 01:18
眠いので、もう寝ますね。
おやすみなさい。
324
名前:
デフォルトの名無しさん
:03/09/21 01:41
>>315
って、ネタじゃなかったのね。
325
名前:
デフォルトの名無しさん
:03/09/21 01:58
>>318
「ハゲ」だよ。
>>313
の平仮名じゃ満足できなかったのか?
326
名前:
デフォルトの名無しさん
:03/09/21 02:49
OOの偉い人はみんなみごとなハゲだぞ!
ハゲだけじゃ誰が誰だかわからないじゃないか!
327
名前:
デフォルトの名無しさん
:03/09/21 13:50
偉くなるとハゲるのかー
プログラマー辞めます。
328
名前:
デフォルトの名無しさん
:03/09/21 13:56
ちょっと前だけどよー
ザビエル頭の奴が電車にいて
ハゲは嫌だなーと思って、なんとなく頭見てたら、
睨まれた。
睨まれたので「何、見とんねん」と言ってやったら、
「外見とるねん」と返された。
返す言葉がなかった。
むかつくので、電車降り際に後ろから膝蹴り居れてやったら。
「おまえ、さっき蹴ったやろ?蹴ったやろ?」
と、ホームで大声で騒ぐの。
「訴えてやる」とか言い出したの。
恥かしいったらありゃしない。
これだから、ハゲは嫌いなんだ。
コンプレックスもちすぎなんだよ。
マイナス思考過ぎるんだよ。
いつも、くだらないこと考えてそうなんだよ。
ちくしょう。
うるさいので、とりあえず、謝りました。
私の負けですか?そうですか。
329
名前:
デフォルトの名無しさん
:03/09/21 14:15
こんなとこで、つぶやいてるだけと言うことでお前の大負け。
330
名前:
デフォルトの名無しさん
:03/09/21 15:29
初歩的なことなんですが、
ファイル大きさを得る最適なコードを教えてください。
または、ファイルサイズを得なくても、許される限り、ファイルの終わりが来るまで
バッファを拡張していきながらファイルから入力するコードを教えてください。
宜しくおねがいします。
331
名前:
デフォルトの名無しさん
:03/09/21 15:31
>>330
末尾にfseekしてftell
332
名前:
デフォルトの名無しさん
:03/09/21 17:24
>>330
最適の基準による。重視したいのは移植性、それとも 2GB over のファイルへの対応、
あるいは性能か?
333
名前:
デフォルトの名無しさん
:03/09/21 18:09
>>330
>または、ファイルサイズを得なくても、許される限り、ファイルの終わりが来るまで
>バッファを拡張していきながらファイルから入力するコードを教えてください。
いいのがあるがスレ違いなので回答できない。
UNIXやWindowsなど特定の処理系の板かスレで聞くといい。
334
名前:
デフォルトの名無しさん
:03/09/21 18:17
ぢゃあ、このスレ的な回答は、
void f(std::istream &i, std::string &s)
{
while(i){std::getline(i, s); s += '\n'}
}
ということでよろしいか?
335
名前:
デフォルトの名無しさん
:03/09/21 19:11
>>334
STLPortのstd::stringは意外に小さいサイズでポッキリ逝っちゃうから
std::ropeを使った方がいいと思う。
336
名前:
デフォルトの名無しさん
:03/09/21 20:21
プログラムを使わない会社っていっぱいあるよな?
337
名前:
デフォルトの名無しさん
:03/09/21 20:21
ファイルサイズを得たいなら、末尾にfseek()してftell()、2GBを超えそうならfgetpos()でいいんでないの?
338
名前:
デフォルトの名無しさん
:03/09/21 20:22
>>336
は?
339
名前:
デフォルトの名無しさん
:03/09/21 20:42
>>337
fpos_t の内部表現は実装依存だから、fgetpos() しても、一般的な方法では
そこからファイルサイズを取得できないぞ。
340
名前:
デフォルトの名無しさん
:03/09/21 20:43
>>337
C++ではタブー
341
名前:
デフォルトの名無しさん
:03/09/21 20:45
参照
http://www.book-i.net/ad07
342
名前:
デフォルトの名無しさん
:03/09/21 21:15
変な質問ですけど
だいたいの人はテキストではなくborlandとかmicrosoftの開発支援ソフト
つかってるんですよね?
343
名前:
デフォルトの名無しさん
:03/09/21 21:17
>>342
どういう比較?
344
名前:
デフォルトの名無しさん
:03/09/21 21:20
>>343
windows付属のテキストエディタのみでプログラムを完成させるのが
一般的なのか、作成支援ソフトをつかって作ってるのが主流なのか聞きたいのです。
345
名前:
デフォルトの名無しさん
:03/09/21 21:26
最低でも秀丸レベルは使ってるだろうなぁ>エディタ
346
名前:
デフォルトの名無しさん
:03/09/21 21:28
edlin使ってます
347
名前:
デフォルトの名無しさん
:03/09/21 21:29
ありがとう
348
名前:
デフォルトの名無しさん
:03/09/21 21:29
>>344
うーん、言葉の定義がアレだが
MicrosoftやBorland, Metrowerksなどは統合開発環境を製品として売り、
コンパイラはその中のパーツでしかないので
それらを買った人は普通統合開発環境で使うが。
コンパイラだけが入手できるものならば(GCCやBCCなど)、
そのほかに自前で調達したエディタなどを使うのが普通。
349
名前:
デフォルトの名無しさん
:03/09/21 21:59
>>344
開発ターゲットによる。
Windows アプリを C++ で書くなら VC++.net が大多数で、ついで Borland C++ Builder や
Intel C/C++ Compiler などが少数。エディタは統合開発環境のを使う人もいれば、
Vim, Emacs, 秀丸, MIFES とか使ってる人もいる。
Linux や *BSD だと、処理系は gcc が標準。数値計算をやる人は Intel C/C++ Compiler
使ってる人もいるみたい。標準的な統合開発環境がないので、だいたい好きなエディタを
使ってる。
350
名前:
デフォルトの名無しさん
:03/09/22 00:49
便乗だけどcygwin+KDE+KDevelopとかの人居たりするのかな
ちょっと気になって。
351
名前:
デフォルトの名無しさん
:03/09/22 01:23
C++ BuilderがwxWindowsサポートするみたいだけど…
352
名前:
デフォルトの名無しさん
:03/09/22 01:50
代入演算子って継承されないわりに、オーバロードする時にvirtualつけても
コンパイル通るのはなぜですか?
353
名前:
デフォルトの名無しさん
:03/09/22 02:30
>>350
そもそも動くのか?
354
名前:
350
:03/09/22 02:44
>>353
さぁ、動かしてみないと(^^;
実験してみるか・・・
355
名前:
デフォルトの名無しさん
:03/09/22 08:39
>>352
> 代入演算子って継承されない
意味不明。
struct B {
void operator=(const B&) { cout << "B" << endl; }
};
struct D : B {};
int main() {
D d1, d2;
d2 = d1;
}
で B と出るはずだが。
356
名前:
デフォルトの名無しさん
:03/09/22 12:37
338 名前:デフォルトの名無しさん 投稿日:2003/09/21(日) 20:22
>>336
は?
は?・・・じゃねぇよカス
357
名前:
デフォルトの名無しさん
:03/09/22 12:39
>>356
はぁ?
358
名前:
デフォルトの名無しさん
:03/09/22 12:45
>>355
それは違うだろう。
> D d1, d2;
> d2 = d1;
で呼び出しているのはD::operator=(const D&)で
B::operator=(const B&)ではない。
D::operator=(const D&)はBから継承したのではない。
嘘だと思うなら、これをやってみろ。
int main() {
B d1;
D d2;
d2 = d1;
}
359
名前:
デフォルトの名無しさん
:03/09/22 12:57
>>353
動くよ.てか使ってます.
360
名前:
デフォルトの名無しさん
:03/09/22 17:16
lpXXX->lCount
のようなデリファレンス(?)がfor内で繰り返し使用される場合、
LONG lCount2;
など変数に値をいれてそれをfor内で用いた方が
実行速度は速くなるのでしょうか?
361
名前:
デフォルトの名無しさん
:03/09/22 19:18
>>360
誰も答えないね。
答えは、速くなる可能性はある。レジスタ変数に割り当てられたりとかでね。
ところで、デリファレンスって何よ? デリヘルの仲間?
362
名前:
352
:03/09/22 19:34
私が聞いてるのは、継承されるかされないかってことじゃなくて、なんでvirtualつけてもいいのかってことなんです。
virtualつけてもコンパイル通るから、代入演算子が継承されると思っちゃう人が出て来るわけで、
かくいう私もそうだったし、そんなリスクを追ってでも許可する理由があるのかなと想像するわけです。
363
名前:
デフォルトの名無しさん
:03/09/22 20:27
>>362
継承とは関係なく、オーバーライドの問題。
virtualありとなしでは違う動作するのはわかるよね?
使い道があるかどうかまでは知らん。
364
名前:
デフォルトの名無しさん
:03/09/22 20:45
>>362
使い道はあるだろうけど、あんまり意味なさげ。
これに関しては出来ないほうがよかったのかもね。
365
名前:
デフォルトの名無しさん
:03/09/22 20:46
>>362
virtual付ける事によって
「ああ、ここはオーバーライドするから代入の処理が違うんだー」
と、理解する事ができる。
366
名前:
デフォルトの名無しさん
:03/09/22 20:53
地図を表示するプログラムを教えてください。
367
名前:
デフォルトの名無しさん
:03/09/22 20:57
#include <iostream.h>
int main( int argc, char** argv ){
cout << "地図" << endl;
return 1;
}
368
名前:
デフォルトの名無しさん
:03/09/22 21:03
>>367
おいおい、ちゃんと教えてやれよ。
#include <iostream>
using namespase std;
int main(){
cout << "地図\n";
}
369
名前:
デフォルトの名無しさん
:03/09/22 21:05
>>367-368
お前ら何書いてるんだ!!
main(){printf("地図");}
に決まってるじゃねーか
ヘッダファイル?
コンパイラに任せろ
370
名前:
デフォルトの名無しさん
:03/09/22 21:09
┌─────┐
│ │
│ 北海道 │
│ │
├────┬┘
この地図を表示できるプログラムを教えてください。 │青 森 └┐
├──┬──┤
│秋田│岩手│
┌──┐ ├──┼──┼┐
│石川│ │山形│宮城│└┐
┌──┬──┬──┬┐ ├──┼──┬──┼──┼──┤ └┐
│山口│島根│鳥取│└┐│福井│富山│新潟│群馬│栃木│福島│
┌──┬──┼┐ ├──┼──┤ └┬──┼──┼──┼──┼──┼──┼──┤
│佐賀│福岡│└┐│広島│岡山│兵庫│京都│滋賀│岐阜│長野│山梨│埼玉│茨城│
├──┼──┤ └┼──┼──┤ ┌┴─┬┴─┬┴─┬┴─┬┴──┼──┼──┤
│長崎│熊本│大分│愛媛│香川├─┤大阪│奈良│愛知│静岡│神奈川│東京│千葉│
└─┬┴──┼──┼┐ ├──┤ └┬─┴─┬┴─┬┴──┴───┴──┴──┘
│鹿児島│宮崎│└─┤高知│徳島│和歌山│三重│
┌──┼───┴──┘ └──┴──┴───┴──┘
│沖縄│
└──┘
371
名前:
デフォルトの名無しさん
:03/09/22 21:10
>>369
C++スレなんで、ヘッダーまたはprintfのプロトタイプがないとエラーでコンパイルできないよ・・・
372
名前:
デフォルトの名無しさん
:03/09/22 21:15
ほかの地図でもいいんですが何かいいアイディアありませんか?
373
名前:
デフォルトの名無しさん
:03/09/22 21:17
ビットマップなり何なりを読んで表示すれば?
ビットマップを読むライブラリはその辺に転がってるだろうし、
それを表示するのは簡単じゃん。
374
名前:
デフォルトの名無しさん
:03/09/22 21:19
#include <iostream>
using namespace std;
int main(void){
cout << "地図" << endl;
return 0;
}
375
名前:
デフォルトの名無しさん
:03/09/22 21:21
すいません。それを表示するレベルにも達していないので
表示するプログラムを教えてください。お願いします。
376
名前:
デフォルトの名無しさん
:03/09/22 21:22
>>375
・・・・・で、どうしてC++でなんですか?
377
名前:
デフォルトの名無しさん
:03/09/22 21:25
ここでも逝ってこい
誘導されたと言うのを忘れないようにな
(つД`)C/C++の宿題は私にやらせてよ!Ver12
http://pc2.2ch.net/test/read.cgi/tech/1060706382/
378
名前:
デフォルトの名無しさん
:03/09/22 21:25
学校の宿題で出てるんです。C++以外ならできますか?
379
名前:
デフォルトの名無しさん
:03/09/22 21:29
だから宿題スレに逝けと
Cの機能拡張版がC++
でC++の機能も気合いと根性があればCで代替できる
でもってCのソースをC++って言いながら提出してもたぶん大丈夫
(うわめちゃくちゃな説明・・・)
380
名前:
デフォルトの名無しさん
:03/09/22 21:37
どんなのでもいいなら
地図を"map.txt"に保存して
#include <stdio.h>
main(){
FILE* fin;
char sTemp[ 4096 ];
fin = fopen( "map.txt", "r" );
while( feof( fin ) ){
fgets( sTemp, 4096, fin );
printf( "%s", sTemp );
}
}
コレで画面に表示される
制約条件として1行が4095文字(半角)以下である必要があるが
381
名前:
デフォルトの名無しさん
:03/09/22 21:57
>>378
ほらよ。
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::fstream is("map.txt");
std::string s;
while (std::getline(is, s))
std::cout << s;
}
382
名前:
デフォルトの名無しさん
:03/09/22 21:58
>>381
スマソ std::fstream は std::ifstream にしてくれ。
(std::fstreamのままでも動くことは動くが・・・・)
383
名前:
デフォルトの名無しさん
:03/09/22 22:23
飽くまでテキストにこだわるんだなw
まぁでも、地図って言っても実際には画像ファイルを読み込んで表示(出力)
することには変わらんだろうから、概念的には一緒か。
384
名前:
デフォルトの名無しさん
:03/09/22 22:28
でもこんな質問する香具師にgraphicなんか使ったところで質問攻めに合うだけだと思う
385
名前:
デフォルトの名無しさん
:03/09/22 22:45
>>381
やさしいな
386
名前:
デフォルトの名無しさん
:03/09/22 23:51
なんかさぁ、宿題丸投げする奴って死んで欲しいよね。
できません、わかりませんて言えよ。そして退学しろよ。
他にも人生の選択肢はたくさんあるだろうに。
387
名前:
デフォルトの名無しさん
:03/09/23 01:46
んー
俺が同じ学校にいるなら商売にするよ?
特に自分が先輩だったらかつてやったことだし楽勝にできるはず
コレは1回頼ると頼った奴がどんどん落ちこぼれ、
次も頼らざるを得なくなるという素晴らしい商売
388
名前:
デフォルトの名無しさん
:03/09/23 02:47
お嫁サンバ
389
名前:
デフォルトの名無しさん
:03/09/23 03:25
>>387
アスクスパイラル!!
390
名前:
デフォルトの名無しさん
:03/09/23 16:12
>>383
ラスタとベクタも知らない人は黙っててくださいね。
そんな人が 【概念的には】 なんて。
391
名前:
デフォルトの名無しさん
:03/09/23 16:34
>>390
キチガイですか?
392
名前:
デフォルトの名無しさん
:03/09/23 16:40
>>390
>>383
の文面だけでなんで
>>383
がラスタとベクタも知らない人だと分かるのですか?
エスパーの方ですか?
393
名前:
デフォルトの名無しさん
:03/09/23 16:59
>>392
> エスパーの方ですか?
見りゃわかるだろ
394
名前:
デフォルトの名無しさん
:03/09/23 17:00
>>392
>画像ファイル
↑これだけで十分かと。
395
名前:
デフォルトの名無しさん
:03/09/23 17:10
ベクタだろうが何だろうが画像を保存してるなら画像ファイルじゃん
396
名前:
デフォルトの名無しさん
:03/09/23 17:18
だったら、
>>383
に聞いてみよう。
397
名前:
デフォルトの名無しさん
:03/09/23 17:30
漏れはいちいちエロ画をラスタファイルとベクタファイルなんていい分けないぞ。
全部まとめてエロ画だろう?
398
名前:
デフォルトの名無しさん
:03/09/23 17:33
ベクタなエロ画ってどんなのだ?
399
名前:
397
:03/09/23 17:35
言われりゃあまりないな。
とりあえずフォントでぬくか?
400
名前:
デフォルトの名無しさん
:03/09/23 17:37
おまんこの線画
401
名前:
デフォルトの名無しさん
:03/09/23 17:38
だったら、
>>387
に聞いてみよう。
402
名前:
デフォルトの名無しさん
:03/09/23 17:39
アレだろ?
メタファイルってのがベクタ画像なんだろ?
403
名前:
デフォルトの名無しさん
:03/09/23 17:39
誤爆
だったら、
>>397
に聞いてみよう。
404
名前:
397
:03/09/23 17:49
何を答えりゃいいんだ?
まぁ、あれだ少なくとも
>>383
がテキストと画像の違いが
分かってると言うことに1000ドット
ラスタとベクトルの違いが理解できていることに2000ピクセル
>>390
が「ラスタとピクセルというとてもとても難しい事を理解しているのは
自分ぐらいな物だ」と思っている厨であることに10億twip
405
名前:
397
:03/09/23 17:52
>>404
ベクトルじゃなくてベクタだったな。
しかもラスタとピクセルっておなじじゃねぇか?
どうやら漏れは理解出来てない方に分類されるらしい。
406
名前:
デフォルトの名無しさん
:03/09/23 17:52
>>404
先生!!
仲間はずれが一つあります
407
名前:
デフォルトの名無しさん
:03/09/23 17:54
twip=vb厨
408
名前:
デフォルトの名無しさん
:03/09/23 20:04
#define do { 文・・・ } while(0)
こういった場合の、do{}while(0) はなぜ書必要があるんでしょうか?
409
名前:
デフォルトの名無しさん
:03/09/23 20:10
>>408
#define x {文…}
if(some_cond()) x;
else x;
これがどう展開されるか考えてみよ。
410
名前:
デフォルトの名無しさん
:03/09/23 20:11
>>408
意味がわかりません。文の所を省かないで、元のまま、
使っているところも提示して、
日本語の文章は抜けがないか確認してからもう一度聞いてください。
411
名前:
デフォルトの名無しさん
:03/09/23 20:18
>>408-409
は、エスパーなんじゃないか?
二人でテレパシーで解決してほすい。
412
名前:
デフォルトの名無しさん
:03/09/23 20:23
>>408
breakしたいとも考えられる
413
名前:
デフォルトの名無しさん
:03/09/23 20:54
#define do - while (0)
は定期的に話題になるし(Cでは)有名なイディオムなんだが
それすら知らない奴ばかりなんて(
>409
除く)
さすが休日だな
414
名前:
デフォルトの名無しさん
:03/09/23 20:55
>>410
たぶん
#define FOO do { ... } while (/* CONSTCOND */ 0)
だろう。
NetBSD のソースとか読んでると、良く出てくる。理由は
>>409
が言ってるとおり
だけど。
415
名前:
デフォルトの名無しさん
:03/09/23 22:02
クラスにメンバ関数ポインタの配列をstaticで持たせたいのですが、
ヘッダファイル
class Hoge{
public:
Hoge(){}
age(){}
sage(){}
typedef void (Hoge::*ActionPtr)();
static ActionPtr Act[2];
};
ソースファイル
ActionPtr Hoge::Act[2] = {age, sage};
ってな風にすると型が無いだの再定義などのエラーが出てしまいます。
どうすれば良いのでしょうか?
416
名前:
デフォルトの名無しさん
:03/09/23 22:06
× age(){}
○ void age(){}
× sage(){}
○ void sage(){}
× ActionPtr Hoge::Act[2] = {age, sage};
○ Hoge::ActionPtr Hoge::Act[2] = {&Hoge::age, &Hoge::sage};
417
名前:
デフォルトの名無しさん
:03/09/23 22:46
>>414
定期的に話題になる有名なイディオムも知らない者だが、結局理由はわからんかった。
本当言うと、そんなに興味はないんだが、どうせだから、もちょい詳しく教えてくんろ。
418
名前:
デフォルトの名無しさん
:03/09/23 23:01
興味ないんなら関係ない。
他人のソース読むこともほとんどないだろうから。
419
名前:
デフォルトの名無しさん
:03/09/23 23:04
バカにつける薬はないってことだよ
420
名前:
デフォルトの名無しさん
:03/09/23 23:11
http://www.google.co.jp/search?q=define+do+while+%280%29
421
名前:
デフォルトの名無しさん
:03/09/23 23:32
アドレスのアドレスを関数からもらって関数に渡し、その中身の中身を使おうとしたら
エラーが出てしまいました
#include<iostream>
using namespace std;
void show(int **a){
int i,j,n=9;
cout<<endl;
for(i=0;i<n;i++){
for(j=0;j<n;j++)cout<<*(*(a+i)+j);
cout<<endl;}
}
int **m(){
int i,j,**pp,*p[9],a[9][9];
for(i=0;i<9;i++)p[i]=a[i];
pp=p;
for(i=0;i<9;i++)for(j=0;j<9;j++)*(*(pp+i)+j)=(i+j)%10;
for(i=0;i<9;i++){for(j=0;j<9;j++)cout<<*(*(pp+i)+j);cout<<endl;}
show(pp);
return pp;
}
int main(){
int **a;
a=m();
show(a);//この部分でエラー
return 0;
}
わかる方いたらお願いします
422
名前:
421
:03/09/23 23:33
コンパイル、実行は出来たのですが
実行後mainの
show(a);
の部分で止まってしまいました。
423
名前:
デフォルトの名無しさん
:03/09/23 23:37
>>422
ローカル変数の寿命。
424
名前:
デフォルトの名無しさん
:03/09/23 23:38
m()の中の戻り値だね
>423
425
名前:
デフォルトの名無しさん
:03/09/23 23:41
>>422
>>421
も言っているけど、ppは関数m()を抜けた途端に消滅するので
そのアドレスを持ったaを使い回すのは刃物を振り回すのと同じ。
426
名前:
デフォルトの名無しさん
:03/09/23 23:42
>>421
つーかppはmainに持っておいて、ポインタのリファレンスを使いなさい。
C++使いなら。
427
名前:
415
:03/09/23 23:46
>>416
できたよママン! ありがとう!
428
名前:
デフォルトの名無しさん
:03/09/24 00:08
>>408
==
>>409
==
>>413
doが予約語だってしってた?
429
名前:
デフォルトの名無しさん
:03/09/24 00:11
>>428
全然関係ない。
430
名前:
デフォルトの名無しさん
:03/09/24 00:12
428が何を言いたいのかはわからんが、元の408の聞き方がおかしいのは事実だ。
408が知能の足りない奴だと思われても仕方がないだろう。
431
名前:
デフォルトの名無しさん
:03/09/24 00:20
>408
ループから抜ける条件が要るからじゃん?
432
名前:
デフォルトの名無しさん
:03/09/24 00:26
>>429
関係なくないだろ。
普通は#define for if(1) for
みたいな使い方以外は予約語を define する馬鹿はいない。
433
名前:
デフォルトの名無しさん
:03/09/24 00:29
だから、
>>408
が書き間違えてるんだってば。
もう忘れろよ。
434
名前:
421
:03/09/24 00:30
>>423
>ローカル変数の寿命。
ありがとうございます。
classのデストラクタが呼び出されちゃうみたいな感じですよね
関数の後にもそれが起こるのは知りませんでした。
>>426
>ポインタのリファレンス
というのははじめて聞きました。大体イメージがわくのですが、
void m(int &(**pp))
と書くと、エラーになってしまいます。
決まった書式か、書いてあるホームページを教えていただけるとありがたいです。
(自分でも検索したのですが見つけられませんでした)
435
名前:
デフォルトの名無しさん
:03/09/24 00:30
#define XXX do {...} while(0)
のXXXが抜けてるって揚げ足か。アホらし。
436
名前:
デフォルトの名無しさん
:03/09/24 00:34
例えば、if ( a ) AAA; else printf( "false\n" );
こんな感じのプログラムを書きたいとする。
1.#define AAA b = 1; printf( "true\n" );の場合
if ( a ) b = 1; printf( "true\n" );; else printf( "false\n" );
コンパイル:通らない
2.#define AAA { b = 1; printf( "true\n" ) } の場合
if ( a ) { b = 1; printf( "true\n" ); }; else printf( "false\n" );
コンパイル:通らない
3.#define AAA do { b = 1; printf( "true\n" ); } while( 0 ) の場合
if ( a ) do { b = 1; printf( "true\n" ); } while( 0 ); else printf( "2\n" );
コンパイル:通る
このように、複数の文や式を1つのマクロで実行したい場合に、
do{ ... } while( 0 )ではさむようにする。
437
名前:
デフォルトの名無しさん
:03/09/24 00:43
>>435
さっきから変なスレageてんじゃねーよ
>>408
438
名前:
デフォルトの名無しさん
:03/09/24 00:54
頭悪そうなのが暴れてる変なスレage
439
名前:
421
:03/09/24 00:57
引数をint **&にしたりグローバルにしたりもしたのですが
解決しませんでした。
#include<iostream>
using namespace std;
int **pp;
void show(/*int **&pp*/){
int i,j,n=9;
cout<<endl;
for(i=0;i<n;i++){
for(j=0;j<n;j++)cout<<*(*(pp+i)+j);
cout<<endl;
}
}
int m(/*int **&pp*/){
int i,j,*p[9],a[9][9];
for(i=0;i<9;i++)p[i]=a[i];
pp=p;
for(i=0;i<9;i++)for(j=0;j<9;j++)*(*(pp+i)+j)=(i+j)%10;
for(i=0;i<9;i++){for(j=0;j<9;j++)cout<<*(*(pp+i)+j);cout<<endl;}
show();
return 0;
}
int main(){
//int **pp;
m();
show();//この部分でエラー
return 0;
}
440
名前:
デフォルトの名無しさん
:03/09/24 01:01
全然わかってないな。
返してるのはppじゃなくてpのアドレスだろ。
441
名前:
デフォルトの名無しさん
:03/09/24 01:07
int a[9][9];
の寿命が関数mを抜けた時に尽きてる。
っていうか、そのコーディングスタイルじゃあエラー発見できないと思うよ。
プログラム作法とか、コーディングスタイルに関する本とかWebのドキュメント嫁。
442
名前:
デフォルトの名無しさん
:03/09/24 02:36
構造体のサイズを固定したいんですが。
typedef struct{
char head[4];
long version;
char reserve[248];
}HOGE_INFO;
この場合、reserveで 256バイトにあわせてるんですが
データを追加した場合
reserve再計算するのがまんどくさいのです
どうしたらいいでしょうか?
443
名前:
デフォルトの名無しさん
:03/09/24 02:44
>>442
typedef union {
struct {
char head[4];
long version;
} a;
char b[ 256 ];
} HOGE_INFO;
444
名前:
デフォルトの名無しさん
:03/09/24 02:54
メンバの構造体を無名にしてしまえば
今までと同じように扱えるしな。
445
名前:
442
:03/09/24 03:13
>>443
,444
なるほど
ありがとうございました。
446
名前:
421
:03/09/24 11:01
>> 44
>int a[9][9];
>の寿命が関数mを抜けた時に尽きてる。
>っていうか、そのコーディングスタイルじゃあエラー発見できないと思うよ。
>プログラム作法とか、コーディングスタイルに関する本とかWebのドキュメント嫁。
わかりました。どうもありがとうございます
m(_ _)m
447
名前:
デフォルトの名無しさん
:03/09/24 13:23
猫でも分かるVC++と10日で覚えるVisual C++を読んで
C++とVisual C++の使い方はマスタしました。
書籍に載っている課題レベルのものは、
答えをみずに、ほぼ楽勝で出来ます。
次なるレベルにいくには
何をすればよいですか?
448
名前:
デフォルトの名無しさん
:03/09/24 13:54
なんか作ってみたら?
エロ恋愛シミュレーションとか。
449
名前:
デフォルトの名無しさん
:03/09/24 14:38
「猫でも分かるVC++」を買って、
うちのミケ(メス三歳)に
VC++を教え込もうとしているのですが、
どうも上手く行きません。
これは俺の教え方が悪いのか、
うちのミケが頭悪いのか、
この本が悪いのかどっちでしょうか?
ちなみに俺はプログラムはさっぱり分かりません。
宜しくお願いします m(_ _)m
450
名前:
デフォルトの名無しさん
:03/09/24 14:45
ミケはkeyを上手に打つことは出来ますか?
451
名前:
デフォルトの名無しさん
:03/09/24 14:55
マウスなら上手く扱えます
452
名前:
デフォルトの名無しさん
:03/09/24 14:58
>>449
> ちなみに俺はプログラムはさっぱり分かりません。
明らかにこれが原因。
453
名前:
デフォルトの名無しさん
:03/09/24 16:40
>>449
それミケちゃうねん
マイク(マッチョ三歳)やねん
454
名前:
デフォルトの名無しさん
:03/09/24 19:56
>>451
ワラタ
455
名前:
デフォルトの名無しさん
:03/09/24 22:08
>447
何か自分の作りたいものを作ってみる。
数独などのパズルを解くプログラムとか結構むずいよ。
あと、憂鬱な〜って本でソースのきれいな書き方を学ぶ。
ってかレベルアップが目的なの?
自分の作りたいもの作ってみたいとかじゃなくて?
あと、「十日で覚える〜」とか「はじめての〜」系のは入門書だから、
ワンランク上の書籍もあるはず。
プログラミング関連の書評のページを見つければ、
お勧めの上級の本が書かれています。
456
名前:
デフォルトの名無しさん
:03/09/25 00:55
はぁ、気持ちいい・・・
457
名前:
デフォルトの名無しさん
:03/09/25 00:57
(*;´Д`*)ハァハァハァハァ
458
名前:
デフォルトの名無しさん
:03/09/25 06:17
>>447
初心者用の本を2殺読んだだけでVC++をマスタ出来るとは、
さすが脳味噌の構造が違いますね。
漏れは3年ぐらいやってるが未だにMFCは言うこときかねぇし、
ATLは難しいし、COMは難解だし、
WindowsAPIどころか標準ライブラリの関数プロトタイプすらおぼつかねぇ。
アセンブラなんて追うことすら疑わしい。
漏れは向いてないんだろうか?
459
名前:
デフォルトの名無しさん
:03/09/25 06:27
俺はいまだに、fseek(fp, pos, SEEK_SET) か、fseek(fp, SEEK_SET,pos)か迷うナ。
SEEK_SETも時々思い出せないときがある。
460
名前:
デフォルトの名無しさん
:03/09/25 07:00
printfの書式指定 全部覚えられるか?
漏れには出来そうにない。
MSDN様々だぜ。
461
名前:
デフォルトの名無しさん
:03/09/25 07:55
こういっちゃなんだが、自分を語りたいだけにみえる
447は確かに大言壮語だが
462
名前:
デフォルトの名無しさん
:03/09/25 10:23
pro*c/c++の質問はここでいいのですか?
FETCHした値を入れる構造体にstringを使いたかったのですが、
stringは標準ライブラリ関数なので使えません。
stringの替りになるものはあるのでしょうか?
463
名前:
デフォルトの名無しさん
:03/09/25 10:50
>>460
printfの書式指定は案外簡単。
464
名前:
デフォルトの名無しさん
:03/09/25 11:29
pgmの読み書きを扱うclassを探しています。
自分用のファイルで参考にしたいので,ググってみましたがダメでした。
ご存知の方がおられましたら,よろしくお願いします。
465
名前:
デフォルトの名無しさん
:03/09/25 18:07
>>464
pgmって何? グレイスケール画像ファイルフォーマットの.pgm?
466
名前:
464
:03/09/25 19:30
>>pgmって何? グレイスケール画像ファイルフォーマットの.pgm?
はい、グレイスケールになります。
pbm(2値), pgm(グレースケール), ppm(カラー)の画像フォーマット
の一つで、3つの総称した名前をpnmと呼んでいます。
pgmの見本が簡単そうでいいのですが,その他ファイル形式でも,
見本になるclassがあれば良いのですが・・。
467
名前:
デフォルトの名無しさん
:03/09/25 20:00
>>447
クラスを作ってみよう。テンプレートの。 (ListとかStackとか。
下手に初期化できないから、見ものだよ。
千里眼養えるかもしれないし。
#これを習得はじめから10日のレベルでできたら拍手だ。うん。
468
名前:
デフォルトの名無しさん
:03/09/25 20:19
以前、別スレで答えてもらった方法でもうまくいかなかったんですが、
・仮想関数を持ったクラスAを継承して、クラスBを作ったとします。
・クラスBでは仮想関数を上書きしています。
・Bで上書きされたものを=演算子で、また別に確保したクラスAに上書きしたい。
というものです。
「オペレータ =」を使った方法か何かで、こういうことって可能ですか?(環境はVC6です。
...VFTableを無理やりゴニョゴニョってしなきゃだめなのかな・・・。
{
classA A;
classB B;//classAを継承していて、仮想関数の内容は上書きされている。
A=B;//仮想関数もコピーしたい。
}
469
名前:
デフォルトの名無しさん
:03/09/25 20:21
>>468
むちゃくちゃだな・・
470
名前:
デフォルトの名無しさん
:03/09/25 20:40
class A {
virtual int f() { return 0; }
};
class B {
int c;
virtual int f() { return c; }
};
スライシングが起きて、結果がどうなるかわかるだろ。
メンバcの代わりに仮想関数でも作って呼んでりゃ、もっとひどいことになる。
471
名前:
デフォルトの名無しさん
:03/09/25 20:45
コンパイラ徹の?
472
名前:
デフォルトの名無しさん
:03/09/25 20:56
>>468
struct A{
virtual void foo(){ std::cout<<"A\n"; }
};
struct B : public A{
virtual void foo(){ std::cout<<"B\n"; }
};
A a;
B b;
std::memcpy(&a,&b,sizeof(A));
これで仮想関数テーブルへのポインタもコピーされるから仮想関数が上書きされる
この際
a.foo();
と呼び出しても駄目だ。
なぜならa.foo();は本来コンパイル時に解決できるから、仮想関数経由で呼び出されない。
したがって
A *p=&a;
p->foo();
このようにワザと動的になるようにしてやる必要がある。
(ただし、最適化によっては、これでも静的に結合される場合もある)
結論は、こんなことやめとけってことか
473
名前:
デフォルトの名無しさん
:03/09/25 21:08
>>472
先生('А`)、便乗質問。
A a;
B b;
std::memcpy(&a,&b,sizeof(A));
a.foo();
A *p=&a;
p->foo();
最適化されて、単にAのfoo()が呼ばれるってことはないでつか?
ポインタ経由だと、必ず仮想関数テーブル参照するという仕様?
474
名前:
473
:03/09/25 21:15
あ。。。ちゃんと書いてるやん
逝ってきまーす。
475
名前:
デフォルトの名無しさん
:03/09/25 21:23
継承した仮想関数をコピーして使いたいなんてのは、99%間違いなく実装継承だから
「やめとけ。設計がおかしい。」としか。
476
名前:
468
:03/09/25 21:36
>>469-472
レスThx!
勉強になります。
>>472
かなり怪しい方法ですな。助言のとおり、やめることにします。
>>470
そういう用途ではありませんが、
もし、メンバを呼ぶだけの関数なら、怪しい参照で死亡ってことですよね。
--
今回の目的は、スタック等での渡されたデータの保持を考えていたのです。
完全コピーして保持できればいいなーと。
(型はテンプレート<T>です。なので、クラス側に実装したかった。
でも、安全にやるのは無理っぽいので、参照&ポインタ保持に切り替えます。
皆さんThx!
477
名前:
468
:03/09/25 21:39
>>475
Yes! sure!!
とほほ。(汗
478
名前:
デフォルトの名無しさん
:03/09/25 21:53
>>466
pgmってチラッと調べてみたら、すげぇ単純なフォーマットじゃん。
その程度のプログラムも組めないんじゃ、もっと簡単なものから練習しな。
479
名前:
デフォルトの名無しさん
:03/09/25 23:03
>476
なんで、dup()メソッドを実装しない?
480
名前:
デフォルトの名無しさん
:03/09/26 01:18
>>466
pnmって総称することを知っているくらいなら、libpnmのソースくらい探せるだろ?
classにはなってないが、構造体と関数の仕様を睨めっこすればclassライブラリにするのはすぐだ。
481
名前:
476
:03/09/26 02:23
>>479
クラスの仮想関数がコピーできないから。ってことになるのかな??
...と、思ったけど、そっか。
今いろいろ考えてたら、コードが沸いてきたよ!
ありがとう!!
以下は即興で書いてみた。こんな感じ?(テストはしてない。
template<class T>
T* Dup(T& Item){//何でもコピーできる予定。あ、でも文字列は無理だ。
T *D = new T;
*D = Item//オペレータ任せ
return D;
}
482
名前:
デフォルトの名無しさん
:03/09/26 03:50
>>481
一旦デフォルトで初期化してコピーではなく
コピーコンストラクタを使うほうが効率的だよ。
T *D = new T(Item);
あとディープコピーは
>>479
でも言われているように
オブジェクト自身が上記の文を持つ複製メソッドを持つほうが確実ね。
(ただし派生ごとにいちいち再定義が必要)
templateだとそこをコンパイルする時点でみなされている型で処理するから、
実際の型が違うとき(親クラスの参照などで処理してるとき)は
ディープコピーにならない。
483
名前:
デフォルトの名無しさん
:03/09/26 05:57
>>482
レスThx!
なるほど、少々面倒ですね。
うーん。今回のは継承先->基底の一方通行なので、まだ良いですが。
あと...。
実は、コピーコントラクタの意味を知らなかったです。
言葉だけ知っててかなり謎めいていました。(汗
いや、勉強になります。
484
名前:
デフォルトの名無しさん
:03/09/26 22:08
オブジェクト指向でゲームを作るのはシンドイですか?
485
名前:
デフォルトの名無しさん
:03/09/26 22:10
別にしんどくないよ。
486
名前:
デフォルトの名無しさん
:03/09/26 23:17
change classしてみそ
487
名前:
デフォルトの名無しさん
:03/09/27 00:28
SomeClass hoge;
std::string test = hoge;
上のようにクラスを特定の型にキャストすることが出来たと思うのですが
どのように定義すればいいのでしょうか?
488
名前:
デフォルトの名無しさん
:03/09/27 01:01
・SomeClass型の引数一つ(参照ならばconst付き)のコンストラクタを string側に用意
・operator string()を SomeClass側に用意
どちらも
意図しない型変換をしてしまったり
勝手に一時変数を作って期待通り動作しない
などの原因になるので、注意深く扱う
489
名前:
487
:03/09/27 01:10
>>488
ありがとうございました。
490
名前:
デフォルトの名無しさん
:03/09/27 04:45
VC++の割れ使ってる方おられますか?
本体はあるのですが、ヘルプファイルは出回っていないようです・・・
ヘルプ無しでもプログラムできるでしょうか?
ヨロシクお願いします
491
名前:
デフォルトの名無しさん
:03/09/27 05:10
アカの手先のおフェラ豚め!
ぶっ殺されたいか!?
492
名前:
デフォルトの名無しさん
:03/09/27 05:38
>>490
>ヘルプ無しでもプログラムできるでしょうか?
そういうことはヘルプに書いてある
493
名前:
デフォルトの名無しさん
:03/09/27 05:45
>>490
氏ね
494
名前:
デフォルトの名無しさん
:03/09/27 05:50
>>491
ジョンクリーズみたいな口調ですね
>アカの手先
アカってことは共産主義ですよね?
共産主義ならすべての人が平等であるべきなので
ファイルを共有することはその理念に当てはまると思うのですが・・・
>のおフェラ
私は女性が好きですのでフェラはしません。
>豚
一応これでも人間です
>>492
ってことは、ヘルプが手に入らないとプログラムできるかわからないんですね。
今でもVC++販売してるのでしょうか?
できれば、持っているヘルプファイル放流してもらえませんか?
495
名前:
490
:03/09/27 05:51
↑490
496
名前:
デフォルトの名無しさん
:03/09/27 05:54
>>494
共有しているのか?貰うだけではないのか?
497
名前:
490
:03/09/27 06:10
>>496
答えになっていません
498
名前:
デフォルトの名無しさん
:03/09/27 06:17
なぜ自分が出来るか出来ないかの判断を他人に仰ぐ
499
名前:
デフォルトの名無しさん
:03/09/27 07:09
>>404
フェラはアナルセックスと同じく病み付きになるよ。やってみ♥
500
名前:
デフォルトの名無しさん
:03/09/27 07:22
500ゲット
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.