■過去ログ置き場に戻る■ 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.