1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.50【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1204124447/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
52 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:59:35 ] >>51 状況によるだろうけど、それ書く機会少なくない? 明示しなくても変換(コンストラクタが選択)されるよ。 void f(const std::string& s); f("aaa"); //OK std::string s = "aaa"; //OK
53 名前:25 mailto:sage [2008/03/30(日) 21:03:40 ] >>19 ゴメン、constの付け所を間違えた。 やはりあれだな、>20が真実を語っていたな。
54 名前:デフォルトの名無しさん [2008/03/30(日) 21:07:04 ] 下の"移動アルゴリズム", "移動可能かチェック"で以下のようなエラーが出るんですが 何が悪いのでしょうか。 エラー 1 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 2 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 3 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 21 RPG エラー 4 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 21 RPG #include "Map.h" #include "EDirection.h" #include "DxLib.h" namespace hogehoge{ class MoveStrategy{ public: // 仮想デストラクタ virtual ~MoveStrategy(); // 移動アルゴリズム virtual EDirection Move(const Map& map) const = 0; protected: // 移動可能かチェック virtual bool IsMovable(const Map& map, const int& direction) const; }; }
55 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:09:35 ] >>52 えっと、メンバのreplace使う時とかで、リテラルの長さがほしくてstringに入れる場合、つまり str.replace(str.find("あ"),(string("あ")).length(),string("い")); こういう場面とか、文字列を+でつないでいく、たとえば str = "my name is " + name + "\n"; // エラー str = string("my name is") + name + string("\n"); こういう場面みたいな時です。
56 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:19:20 ] >>54 Mapが定義されて無いんじゃね? >>55 それならおk。
57 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:26:00 ] >>55 見逃してた。stringへの+も明示する必要ないから string("\n") は "\n" だけで良いよ。 str = string() + "my name is" + name + "\n"; でもおk。
58 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:27:50 ] >>56 ありがとうございます。解決しました。 確かにMapがおかしかったです。 原因はMapで純粋仮想関数ではなく、ただの仮想関数を宣言していただけなのに その定義を持っていなかったことでした。
59 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:36:52 ] >>57 >str = string() + "my name is" + name + "\n"; わーお(`・ω・´)いろいろありがとうございます。
60 名前:超初心者29=42 mailto:sage [2008/03/30(日) 21:39:35 ] >>43 ン百万行・・・ いいとこ10万行ぐらいだな、触ってたのは ン百万のソースを触るなんてオープン系の人?(´・ω・`)?? PCアプリでン百万行たって、 モジュール化進んでるからン百万だろうが怖くないしな 名前空間なんかイラネの世界で生きて来たからな〜w Cだとヘッダ単位でモジュール化したりするモンだが。。 規模が違うんだろうな〜〜。。。。
61 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:45:24 ] モジュール化?なにそれ?なスパゲッティコードを君にプレゼントしよう
62 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:49:29 ] 規模が大きくなってくると、人員の質にバラ付きがでてくるのさ
63 名前:54 [2008/03/30(日) 21:50:15 ] ちょっと教えてください。 以下のようなクラス宣言があります。 #include "Player.h" #include "Enemy.h" #include "Map.h" #include <vector> namespace hogehoge{ /********************************** * 概要: 地図の振る舞いを管理する * **********************************/ class Map{ public: static const int CHIP_SIZE = 15; protected: Player* player; //std::vector<Enemy> *enemy; public: // コンストラクタ Map(); //仮想デストラクタ virtual ~Map(); // 地図を表示する virtual void Display() const = 0; // 地下1階への状態を返す virtual const int (& getMap() const)[30][30] = 0; }; }
64 名前:54 [2008/03/30(日) 21:51:09 ] この場合以下のエラーが大量に出てしまいます。 エラー 1 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 2 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 17 RPG ここから#include "Enemy.h"を取ると、エラーなくコンパイルできます。 Enemy.hは以下のようになっています。 #include "Map.h" #include "EDirection.h" #include "DxLib.h" namespace hogehoge{ class MoveStrategy{ public: // 仮想デストラクタ virtual ~MoveStrategy(); // 移動アルゴリズム virtual EDirection Move(const Map& map) const = 0; protected: // 移動可能かチェック virtual bool IsMovable(const Map& map, const int& direction) const; }; } 上のエラーはどういう意味なのでしょうか。
65 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:52:20 ] >>60 同じ同じ。 言語のサポートが優位な点だけど、 大枠でのプログラム層なアーキテクチャはC,C++で左右されないと思うよ。
66 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:01:25 ] >>54 >型指定子がありません - int と仮定しました コンパイラ:「const Map」がよく分からないので、「const int Map」だと考えますね >',' が '&' の前にありません コンパイラ:「const int Map&」、なんか変数名のあとに「&」が出て来たんですけど
67 名前:66 mailto:sage [2008/03/30(日) 22:04:46 ] 一応補足。 2つ目のエラーは、1つ目の仮定のせいで発生してるってことね。
68 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:07:33 ] >>66 Map ってクラスが入れ子になってるからじゃないの? ヘッダの相互参照になってる enemy.h の頭に class Map; ての入れてコンパイル通らない? もしくは cpp 内のみにヘッダ参照宣言入れて、ヘッダ内からの include やめるとか MS VC ならエラー行間違えない筈なんだけどな すげー適当に答えてるけどw >>61 >>62 共同作業でのプログラミング経験ほとんど無いんで〜 他人の綺麗なコードをスパゲティにした事なら何度もあります。未だバレてませんヨ、HAHAHA
69 名前:54 mailto:sage [2008/03/30(日) 22:18:50 ] >> 66, 68 ありがとうございます。 class Map; class MoveStrategy{ }; class Map; class Enemy{ }; とすると、エラーはごっそり減ったのですが、まだ以下のようなエラーが残ります。 エラー 1 error C2061: 構文エラー : 識別子 'MoveStrategy' d:\root\gamecreation\rpg\enemy.h 16 RPG ヘッダの相互参照というのは #ifndef をしていたら、必ず防げるものではないのですか?
70 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:28:30 ] class A{ B b; }; class B{ A a; }; 要はこれと同じ状態。前方宣言でも回避できない。これも class A{ A a; }; という問題に帰着できるから分かるだろ
71 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:32:18 ] >>69 無理かと #include "map.h" #include "Enemy.h" の2行は次の形に展開される class Map { ... void ( Enemy *pEnemy ); <= ★注意★class Map 宣言より上に class Enemy 宣言が無い } この時点でコンパイラは class Enemy の情報を持たないのでエラー class Enemy { ... void ( Map *pMap ); } となり、エラー だから #include が展開された時に Enemy.cpp : class Map; class Enemy { ... void ( Map *pMap ); } Map.cpp : class Enemy; class Map { ... void ( Enemy pEnemy ); } にするのが手っ取り早い VC 使ってるなら #pragma once 使った方がコードスッキリするよ
72 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:32:45 ] ゲームのように扱うデータが多かったりすると 必然的にコード量は増えるし、オブジェクト指向も取り入れるんだろう。 制御屋だとシステムの大きさに比例してでかくなるけど 担当も細分化されて、一人で担当するところはそれほどでもないね。 安全に関わるから。
73 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:40:43 ] >>72 エミュレータ使ってもバグ取れないなんてザラだからねぇ・・・ ブレークポイント張りずらいし 組込み系だとC++コンパイラが無いこと多い ミドルウェアでC以外のもの見た事ないし。 linuxのほとんどのコアソースがCでなのも傍証してる(ソースが古いのも一因) gccだけはブレークかけても、どこがバグなのかさっぱり分からん(´・ω・`;;;) モジュール化の概念はドコ行っても同じかも
74 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:42:58 ] 最近は組み込みもC++にシフトしてるよ 例外とかメモリ確保とか制限は多いけど
75 名前:54 mailto:sage [2008/03/30(日) 22:43:31 ] >>70 , 71 一応上のエラーは,これも class MoveStrategy; を追加することで消えました。 有益な情報ありがとうございます。 この問題に関して不案内なところがあるので、もう少し勉強してみます。
76 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:51:40 ] >C++コンパイラが無いこと そこでcfrontですよ
77 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:06:52 ] 日立のやつはC++使えるよね PCみたいにはいかないけど。
78 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:17:00 ] 組込みでmallocに頼るのがどうも・・・ 1週間後にフリーズ>再起動したら直りました、で 原因がmallocじゃどうにもならないしな〜。 RAMの必要量が予想出来ないしなぁ。。。 C++の展開命令見ると何書いてあるか分からないしなぁ Cならまだしも。
79 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:49:40 ] Templateの諸機能が動的に実装してある
80 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:05:05 ] すみません。質問させて下さい。XP+VC++ 9.0です 【やりたいこと】 データファイルを読み込んで、ダイクストラ法を使って最短ルートを求める 【条件】 ノードは可変数個、コストは全て正の値、スタートノード及びゴールノードは dijkstra.exe -start_node -goal_node のようにプログラム開始時に与える。 【何が分からないのか】 可変数個のノードや、エッジがどのノードに向かって延びているか、 かかるコストはいくらか等のデータをどのようにデータファイルに格納するか、データファイルの構造決定。 データファイルの構造が決定したとして、どのように可変数個のデータを読み込むか、 どうやってデータの終わりを探すか。ファイルからデータを読み込んだとして、データの整合性を どのように検証するか。 分からないことばかりですが、誰かヒントだけでも教えて下さい。宜しくお願いします。
81 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:25:26 ] >>19 亀レスだけど、typedefするのも1つの手。 typedef int IA_5[5]; IA_5 array[3] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; // == array[3][5] IA_5* func(){ return array; } int main() { IA_5* p = func(); for(int i = 0; i < 3; ++i){ for(int j = 0; j < 5; ++j) cout << p[i][j] << " "; cout << endl; } return 0; }
82 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:37:54 ] >>80 可変個のデータ読み込みは、非常に基礎的で、ダイクストラ法と関係ないですよ それをまず出来るようになって下さい
83 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:38:58 ] >>80 C++でも良いんですか? もし良ければSTLを使ってノードを管理すると簡単と思います
84 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:57:59 ] >>82-83 レスありがとうございます。私の修行が足りないようで、お恥ずかしい限りです。 勉強して理解を深めてからもう一度出直してきます。スレ汚してすみませんでした。
85 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 07:23:05 ] すこし作ったよ #include <vector> #include <iostream> #include <set> using namespace std; class node { public: unsigned int dis,ver; node(){ ver=dis=-1;} node(unsigned int i, unsigned int d){ dis=d; ver=i; } bool operator < (const node &x) const { return (dis<x.dis); } }; typedef set<node> vertex; main(){ vector< vertex > g; //グラフの定義 g.push_back(vertex()); //頂点追加 g[0].insert(node(1,3)); //辺と距離の追加 g[0].insert(node(2,5)); g[0].insert(node(3,2)); vertex::iterator p=g[0].begin(); cout<<(p->ver); // 最も短い距離の頂点を出力 }
86 名前:デフォルトの名無しさん [2008/03/31(月) 11:15:09 ] VC++2008EEで勉強中なのですが、 いろんなサイトの見よう見まねで下記ソースを試してみたところ ビルドして一瞬ウィンドウが出て終わってしまいます。 これはreturn 0のせいかと思って、return 0を消しても やはり一瞬で終わってしまいます。 どうすれば終了しないでコマンドプロンプトのような画面で 文字が確認できるようになるのでしょうか。 #include <iostream> int main(void){ using std::cout; using std::endl; int a; int &alias = a; alias = 100; cout << "a = " << a <<endl; cout << "alias = " << alias <<endl; return 0; }
87 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:32:42 ] getchar(); return 0;
88 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:41:03 ] >>87 ありがとうございます!ようやく確認できるようになりました。 キーボード入力待機状態にして止めるんですね。 勉強になりました。
89 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:41:05 ] Ctrl + F5
90 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:45:24 ] >>89 デバッグなしでビルドというのでも止まるんですね。 ありがとうございます。 C言語はいろいろ解らないことばかりで非常に助かります。
91 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:48:00 ] >>86 コマンドプロンプトで実行するか、>>87
92 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:04:44 ] >>90 それらはCの知識ではない。Windowsの使い方の知識とVisualStudioの使い方の知識だ。
93 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:36:21 ] >>84 Boostのグラフライブラリを使う
94 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:10:05 ] builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm ポインタの勉強をしているのですがサンプルのコードを動かしてみたところうまくいきません
95 名前:デフォルトの名無しさん [2008/03/31(月) 14:13:24 ] もうアパートを探すのはつかれたよ。 はやくプログラミングしたいよ。
96 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:20:17 ] >>94 コメント欄がすごいことにw
97 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:23:25 ] >>94 もうこの人終わりだなw
98 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:28:30 ] int *n; *n = 5; /* ポインタ変数nに値5を代入 */ 初期化もポイントする先も決めてないポインタをそのまま使うのって非常に不味いよねぇ 自分ははじめにポインタの初期化を必ずするよう教わったがなぁ
99 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:40:39 ] >>96 >>97 あー、前スレで話題になった奴か。 エピステーメーにまで指摘されていたのに未だに記事の修正が入らないのね。 編集がコメントなにやらゴミを書いているけどそんなものは記事の修正とは認められないし。 この程度のコメントじゃZDNETとしても著者としても痛くも痒くもないのでしょ。
100 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:46:23 ] >>99 もしや本人さま(えぴさん)で?
101 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:48:48 ] どうなるか、サンプルソースをコンパイルして実行してみたら思った通り以上終了w フォールト ->00401007 c70005000000 mov dword ptr [eax],0x5 ds:0023:00000001=???????? だってさ。 *n = 5: の部分かな。エラーがソース乗せちゃまずいでしょw
102 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:49:42 ] × エラーがソース乗せちゃまずいでしょw ○ エラーがでるソース乗せちゃまずいでしょw
103 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:54:00 ] >>101 コンパイラにもよるんじゃね? いや、試してないけど
104 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:55:06 ] 見てないけどエラーを修正しなさいって問題なんだろ
105 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:56:59 ] あんまり往生際悪いんで吹いたww
106 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:57:20 ] 「動くけど危険」とかいう話じゃなくて「動かない」コードだろ、これは
107 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:59:25 ] >>101 必ずしも 異常 終了するとは限らない ポインタの指す先による >>106 場合によっては動くコード
108 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:03:01 ] 最適化をオフにして次のコードを実行すると… 勘弁してほしいタイプのバグ #include<stdio.h> void hoge(void){ static int a=5; int *n=&a; printf("a=%d\n", a); } void huga(void){ int *n; *n=100; } int main(void){ hoge(); huga(); hoge(); return 0; }
109 名前:99 mailto:sage [2008/03/31(月) 15:13:55 ] >>101 落ち着け。「以上終了」になっているぞw >>100 勘弁してくれ。一緒にされたらそれはそれで迷惑だ。 もし私がエピたんなら、自分のブログでネタにしているよ。 いや、それだと本人が書いていたら拙いな。 ……と思って検索したら、やっぱり書いていたかw で、ついでにうろついたらまぁ、他にも釣れた罠。
110 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:21:40 ] επιστημηってプログラム系の掲示板でよく見かけるけどなんの人なの?
111 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:30:11 ] 掲示板でよく見かけるヤツは偽者 自称C++のちょっと偉い人
112 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:31:34 ] C++の黎明期からC++に関わってきた人。 かといって、C++の隅から隅まで知っているわけではなくて、 Boostのコミッタというわけでもなくて、 意外に中途半端な立ち位置な気がするお人。 でも、俺より知識も経験もあるのは確実。
113 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:32:34 ] 魚拓とっておこうと思ったら既に3つも取られてたw
114 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:33:23 ] エイプリルフールは明日だ
115 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:36:26 ] なんか冒頭に追記が > 現在、本稿には技術的観点から異議が多数寄せられているため、詳細をレビュー中です。 > 初めてご覧になる方は、コメント欄もあわせてお読み下さい。 > また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。 そんな大層なレベルの話なのか…?
116 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:39:40 ] >現在、本稿には技術的な誤りが存在するため、詳細をレビュー中です。 >初めてご覧になる方は、コメント欄もあわせてお読み下さい。 >また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。 厳しくなったw
117 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:44:52 ] 初心者にとってポインタの概念ってそんなに躓きやすい物なのか? ポインタの基本的な部分で苦労したことがないのでそこら辺が不思議だ
118 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:45:30 ] >>94 おい。間違えて「記事推薦者になる」ってとこクリックしちまったぞ。 どうやって取り消すんだ。おい。教えろ。
119 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:50:36 ] >>117 昔教える立場にあったことがあるが、何でかしらんが分かる奴と分からん奴がいて、 分からん奴はいくら教えてもなかなか理解してくれん。 メモリってのがリニアな空間で位置や距離の概念があることを理解できないらしい。
120 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:55:35 ] 番地とか分かりやすいものに例えればいいんじゃね?
121 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:56:25 ] >>118 ワロヌ
122 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:00:32 ] >>117 俺もそうだけど、アセンブラから入ると、「ポインタが分からない」と言う人がどう分からないのか分からない 新人に教えるときなんかにとても苦労する
123 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:07:17 ] 変数:戸棚 値:ケーキ ポインタ:「戸棚にケーキがあります」という母ちゃんの置き手紙
124 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:09:03 ] >>123 訳わからんw
125 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:17:56 ] >>123 戸棚の場所が書いてあるメモ、なんじゃね?
126 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:25:27 ] 変数: 箱や器のようなもの 値: 箱にいれる何か ポインタ: 箱が置いてある場所を書いてあるメモ みたいな解釈でいいんだろうか? ポインタを正しく理解できてるか自分でもよくわからん。
127 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:25:38 ] ケーキを食った後置き手紙を始末しないと後の人が迷惑するという話か
128 名前:99 mailto:sage [2008/03/31(月) 16:31:08 ] いや、置き手紙はそのままで戸棚に「中身は俺の腹の中」って書いておくんだろ。
129 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:38:46 ] JAVAの本を書いている人みたいだけど、 これほどポインタの概念がわかってなくても 使えるのか、JAVAって。 ある意味うらやましいかも。
130 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:45:21 ] >>128 そして後から置き手紙を読んだワカメが大激怒
131 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:45:51 ] >>129 でも、ポインタも理解できないような人が書いたJavaのコードって、やっぱりどこか危なげなんじゃないかね
132 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:47:44 ] >>130 Access Violationのメッセージボックスのアイコンに、ワカメの顔が表示されるとこ想像した。
133 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:52:23 ] >>129 それらの本も、もしかすると同じようにでたらめな知識に基づいて書いてるんじゃないかと疑わざるを得ない気がする。
134 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:06:45 ] >>131 参照がBoostのスマートポインタと同じようなもので 理解できない人は怪しいコードいっぱい書くことに
135 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:11:39 ] (Javaの)参照がBoostのスマートポインタと同じようなものってこと? なんで*Boostの*って制限を設けるか理解しかねるけど、 Javaの参照はポインタそのものと同じようなもので、 それに加えて参照されなくなってからは回収される可能性があるだけ。 C++でのスマートポインタはローカルに限れば基本的にスコープを抜けた時点で回収されるから、 JavaのGCとは少し違う。
136 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:17:49 ] 自分の知らないところでチョコチョコされる行動まで把握しないといけないのは面倒だが かといって自分で何もかも把握して処理するのも面倒 なかなかバランスが難しいのねぇ
137 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:20:59 ] 個人的にはRAIIは気に入ってるというか、いい方法だと思うんだけどなぁ。 もっとC++成分を取り入れたJavaライクな言語とかあればうれしいんだけど。
138 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:07:30 ] それならDを試してみてはどうだろう。
139 名前:デフォルトの名無しさん [2008/03/31(月) 19:35:48 ] Dは頭の悪そうな言語名だから使いたくない。
140 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:38:06 ] 頭の悪い人程そういうことを気にするもんだな。
141 名前:デフォルトの名無しさん [2008/03/31(月) 19:39:18 ] 予想通りのレスだな。
142 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:44:39 ] >>139 豆腐屋っぽいよね
143 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:47:25 ] D は使って欲しかったらまず言語仕様を安定させて欲しい。
144 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:51:40 ] python + cpp + java = D (という予定)
145 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:04:37 ] C++にもっさり毛が生えたのがD
146 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:11:27 ] D1.0は仕様確定したよ。
147 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:13:03 ] 2.0 へ移行することになったときに 仕様が違いすぎて大変なので面倒くさい。
148 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:44:25 ] >>126 違うよ。 値は数値とか文字列とかの事で、変数は値につける名札で、ポインタは値がアドレスの変数の事だよ。
149 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:37:22 ] >>148 エロ本が変数で、収録されてる写真が値 ポインタはエロ本という変数で(便宜上*がついてる、というかポインタであることの証)、そのポインタの値はページ数 ってな理解でいいの?
150 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:52:48 ] エロ本は型で、デラベッピンが変数じゃね
151 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:07:50 ] デラベッピンはエロ本の派生クラスだ。
152 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:08:45 ] エロ本が概念でデラベッピンが型だろう